2016-04-15 5 views
0

は次のとおりです。特にいつPromise.all()の句が実行されましたか?私は<a href="http://bluebirdjs.com/docs/api/promise.all.html" rel="nofollow">http://bluebirdjs.com/docs/api/promise.all.html</a></p> <p>特にコードから、このコードスニペットを見つめてる

var files = []; 
for (var i = 0; i < 100; ++i) { 
    files.push(fs.writeFileAsync("file-" + i + ".txt", "", "utf-8")); 
} 
Promise.all(files).then(function() { 
    console.log("all the files were created"); 
}); 

私の質問は、ファイルが読み込まれたら、コンパイラは.thenブロックを呼び出すために知っているん方法です。ファイルが長さ10または長さ100のときに.then節が呼び出されないようにする。

+1

Javascriptにコンパイラがありません – alexmac

+1

「Promise.some」ではなく「Promise.all」と呼ばれていますか?また、 'files'は約束をもってこの行に入る前に完全に埋められています。 – jib

+0

ああこれは大いに役立ちます!ありがとう – beginner

答えて

0

Promise.allは、提供されている約束をラップする新しい約束事を作成して返します。内部の約束のうちどれが解決されたかを把握します。 100がすべて解決されると、ラッパーは解決を約束します。

1

いつPromise.all()の句が実行されましたか?

Promise.all()は、Promise.all()に渡された約束事の配列に基づいて特定の動作を持つ新しい約束を返します。

約束の配列で唯一の約束が拒否された場合、Promise.all()約束はそれを拒否し、拒否ハンドラ(もしあれば)を.then()と呼ぶでしょう。

成功したすべての約束が解決された場合、Promise.all()約束が解決され、.then()の解決ハンドラが呼び出されます。

特に私の質問は、コンパイル時にファイルが読み込まれると.thenブロックを呼び出す方法を知っています。どのようなファイルが10または100

Promise.all()の長さ の長さである、それはあなたがそれを渡すひとつひとつの約束に.then()ハンドラを取り付けることによって、仕事だしない場合に呼び出されてから.then 句を防止しますその進行状況を監視します。あなたが通過したすべての約束がいつ解決されたかを把握するカウンタを維持します。

関連する問題

 関連する問題