Mike Bostock の queue.jsがどのように機能するかを理解しようとしてきましたが、どのように機能するのかわかりません。私が理解していない部分は、コードがコールバックの実行を継続する方法です。特にpop()
方法がよくわかりません(45行目)。私の理解では、このメソッドは次の未処理の遅延関数を取ります。キュー内の次の延期された関数を (潜在的に) 開始し、すぐにポップされた関数が終了したときに実行するコールバックを追加します。次に、最後にその関数を実行します。私の質問は、このコールバックを実行するコードは何ですか?
4196 次
2 に答える
10
各遅延関数は、実際には何も返しません。最終的な引数をコールバックとして実行することが期待されています。たとえば、これは機能しません
var foo = function(i) {
console.log(i);
return i;
}
var finished = function(error, results) {
console.log(results);
}
queue(2)
.defer(foo, 1)
.defer(foo, 2)
.defer(foo, 3)
.defer(foo, 4)
.awaitAll(finished); // only prints "1" and "2", since foo() doesn't execute callbacks
ただし、foo
コールバックを取るように変更すると、
var foo = function(i, callback) {
console.log(i);
callback(null, i); // first argument is error reason, second is result
}
その後、コールバックを実行するqueue
と続行されます。
于 2012-12-23T19:42:29.833 に答える
2
コードを正しく理解し、コールバックをインスタンス変数に入れると、これが によって実行さqueue.await()
れqueue.awaitall()
ます。await
notify()
于 2012-12-23T06:46:33.363 に答える