0

これら 2 つのコードは本質的に同じことを行い、同じように使用できますか?

// dbGrab returns a promise.

// OPTION A
var consoleFoo = function(refToFoo){
  dbGrab(refToFoo)
    .then(function(foo){
      console.log(foo);
    })
}

// OPTION B
var consoleFooES7 = async function(refToFoo){
  var foo = await dbGrab(refToFoo);
  console.log(foo);
}
4

1 に答える 1

1

この 2 つの関数の違いは、最初の戻り値undefinedと 2 番目の戻り値Promiseです。ほぼ同じになるように少し修正しました。

var consoleFoo = function(refToFoo){
  return dbGrab(refToFoo)
    .then(function(foo){
      console.log(foo);
    })
}

// OPTION B
var consoleFooES7 = async function(refToFoo){
  var foo = await dbGrab(refToFoo);
  console.log(foo);
}

また、現時点 (2016 年初頭) ではネイティブの promise の動作が遅くなることを考慮することbluebirdもできます。そのため、最初のアプローチがより高速になる可能性があります。コンパイルのターゲットに応じて、ES5 または ES6 ES7 のコンパイラは、ネイティブPromisesまたはGenerators. ほとんどの場合、それは問題ではありませんが、今のところ、ルーティングなどの高負荷タスクには ES7 slyle をお勧めできません。

于 2016-02-23T16:11:48.590 に答える