Promise.each
をブルーバードで使用する必要があります。しかし、バンドルファイルを見ると、実際にはブルーバードを使用して2回考えています。青い鳥無しPromise.each
誰も私に、ブルーバードPromise.each
のような機能を使用しない例を教えてもらえますか?
Promise.each
をブルーバードで使用する必要があります。しかし、バンドルファイルを見ると、実際にはブルーバードを使用して2回考えています。青い鳥無しPromise.each
誰も私に、ブルーバードPromise.each
のような機能を使用しない例を教えてもらえますか?
確か:
Promise.each = function(arr, fn) { // take an array and a function
// invalid input
if(!Array.isArray(arr)) return Promise.reject(new Error("Non array passed to each"));
// empty case
if(arr.length === 0) return Promise.resolve();
return arr.reduce(function(prev, cur) {
return prev.then(() => fn(cur))
}, Promise.resolve());
}
それとも現代のJSと(クロームまたはエッジまたはtranspiler付き):
Promise.each = async function(arr, fn) { // take an array and a function
for(const item of arr) await fn(item);
}
ありがとうございます。 –
空の場合は0が偽であるので決してテストされないので、空の配列は解決されずに非配列として拒否されます。 '!(arr instanceof Array)'を使う方が良いです。 – Findiglay
配列が空の場合、 'Array.prototype.reduce()'は 'initialValue'(ここでは' Promise.resolve() ')を返すので' empty check'は不要です。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce – pickypg
Promise
のドキュメントをMDNに見ると、2つの方法があります。 all
とrace
の場合、最初の約束が解決されたときに後者が終了するすべての約束が解決されたときに前者が終了します。
これは、ブルーバードPromise.each
でできることすべてを行うためのツールを提供するはずです。それでも問題が解決しない場合は、具体的な問題を述べてください。私があなたを助けることができるかどうかがわかります。
この回答は良いコメントでしょう。しかし、最も重要なことは、「Promise.each」(非同期的に起動する予測可能な順序付けされた操作)の仕方では正確ではないということです。 'Promise.all'と' Promise.race'の両方は、秩序を知らない(特に「レース」は「最初のものが勝つ」)。 – pickypg
FTR - 青い鳥は部分を持っており、カスタムビルド - あなたは5キロバイトな限り低く得ることができます –
どうすればいいですか? 'require(bluebird/each) 'をインポートしようとすると動作しません –