この安全装置は必要ですか?などPromise.all
、Promise.race
、 -Promise.all(ES6とBluebird)の可聴番号
Promise.all([...].map((thenable) => Promise.resolve(thenable)));
は、収集方法にthenablesを供給することが可能と安全ですか?どんな落とし穴?
この質問は、Bluebirdと、ポリ充てんされたネイティブES6のすべての実装に関するものです。
この安全装置は必要ですか?などPromise.all
、Promise.race
、 -Promise.all(ES6とBluebird)の可聴番号
Promise.all([...].map((thenable) => Promise.resolve(thenable)));
は、収集方法にthenablesを供給することが可能と安全ですか?どんな落とし穴?
この質問は、Bluebirdと、ポリ充てんされたネイティブES6のすべての実装に関するものです。
これは必要ではなく、約束の実装自体によって行われるべきである:
all
関数は、渡された約定の履行値の アレイで満たされる新しい約束を返すまたは と拒否します最初に拒否したことを約束した理由。 これは、この アルゴリズムを実行するので、渡されたiterableのすべての要素が約束するように、すべて の要素を解決します。 by MDN
ES2015 Specification, paragraph 25.4.4.1 Promise.all (iterable)
言い回しよりアクセスは:
反復可能な配列で渡された何かが約束されていない場合、それは、
Promise.resolve
で1に変換されます。
ありがとうございます。同じことがブルーバードにも当てはまると思います。私は、「プロミス」と「可」のタイプが[ブルーバード・ドキュメント](http://bluebirdjs.com/docs/api/promise.all.html)で互換的に使用されているという事実と混乱していました。好きです。 – estus
'Promise.all()'に渡すiterableには、任意の値または値を指定できます。あなたは自分を約束に包む必要はありません。 'Promise.all()'の実装は、それらがthenableであるかどうかを調べ、そうであれば解決を待っています。もしそうでなければ、その値は解決になります。デモをご覧ください:https://jsfiddle.net/jfriend00/jgf0xwhm/ – jfriend00