Skip to content

Commit

Permalink
write(promise-all): timerPromisefyベースのものへと対応
Browse files Browse the repository at this point in the history
 
fixes #123
  • Loading branch information
azu committed Jun 13, 2014
1 parent bdb929f commit c0a1363
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 6 deletions.
2 changes: 1 addition & 1 deletion Ch2_HowToWrite/lib/timer-promisefy.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
"use strict";
// `delay`ミリ秒後にresolveされるpromiseを返す
// `delay`ミリ秒後にresolveする
function timerPromisefy(delay) {
return new Promise(function (resolve) {
setTimeout(function () {
Expand Down
19 changes: 14 additions & 5 deletions Ch2_HowToWrite/promise-all.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -56,15 +56,24 @@ main().then(function (results) {
include::embed/embed-promise-all-timer.js[]
----

`promisedMapping` に数値の配列を渡すと、
数値をそのまま`setTimeout`に設定したpromiseオブジェクトの配列が返されます。
`timerPromisefy` は引数で指定したミリ秒後に、その指定した値でFulFilledとなる
promiseオブジェクトを返してくれます。

`Promise.all`に渡してるのは、それを複数作り配列にしたものですね。

[source,javascript]
promisedMapping([1, 2, 4, 8, 16, 32]); // => promiseオブジェクトの配列
----
var promises = [
timerPromisefy(1),
timerPromisefy(32),
timerPromisefy(64),
timerPromisefy(128)
];
----

この場合は、1,2,4,8,16,32 ms後にそれぞれresolveされるpromiseオブジェクトの配列を作って返します
この場合は、1,2,4,8,16,32 ミリ秒後にそれぞれ`resolve`されます

つまり、このpromiseオブジェクトの配列がすべてresolveされるには最低でも32msかかることがわかります
つまり、このpromiseオブジェクトの配列がすべてresolveされるには、最低でも32msかかることがわかります
実際に<<Promise.all, `Promise.all`>> で処理してみると 約32msかかる事がわかります。

この事から、<<Promise.all, `Promise.all`>> が一つづつ順番にやるわけではなく、
Expand Down

0 comments on commit c0a1363

Please sign in to comment.