javascriptで並列処理がしたくPromiseについて勉強しています。
ある重たい処理を並列処理したく、以下のようなコードを作成しました。
作成した10個のPromiseオブジェクトをPromise.allで並列処理したかったのですが、
出力結果を見る限り、
Promiseオブジェクトを作成した時点(promise.push(test(i))の部分)で、
test1()のconsole.logが実行されているみたいでこれが理解できません。
Promise.allを実行して初めて並列処理が行われるものだと思っていたのですが、
これでは並列処理の前にもうすでにすべてのtest1()が実行されており、並列処理の意味がないように思っています。
どのようにすればPromise.allで並列処理が実行できるのでしょうか。教えていただければ幸いです。
javascript
1// 重たい処理の代わり 2function test1(i){ 3 return new Promise((resolve) => { 4 console.log(i) 5 resolve(i+"OK"); 6 }); 7} 8 9var promise = []; 10for (let i=0; i<10; i++){ 11 promise.push(test1(i)); 12} 13console.log('並列処理スタート') 14 15Promise.all(promise) 16 .then((str1) => { 17 console.log(str1); 18 }) 19 .catch((str1) => { 20 console.log("NG"); 21 });
consolelog
10 21 32 43 54 65 76 87 98 109 11並列処理スタート 12[ 13 '0OK', '1OK', '2OK', 14 '3OK', '4OK', '5OK', 15 '6OK', '7OK', '8OK', 16 '9OK' 17]
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/17 05:41