【发布时间】:2014-01-28 07:58:25
【问题描述】:
以下是 Domenic Denicola 编写的关于 JavaScript 异步编程的流行幻灯片中的一些代码。
function parallel(actions, callback) {
var results = [];
function finished(result) {
results.push(result);
if (results.length === actions.length) {
callback(results);
}
}
actions.forEach(function (action) {
action(finished);
});
}
parallel([
function (cb) {
twitter.getTweetsFor("domenicdenicola", cb);
},
function (cb) {
stackOverflow.getAnswersFor("Domenic", cb);
},
function (cb) {
fourSquare.getCheckinsFor("Domenic", cb);
}
], function (results) {
console.log("tweets = ", results[0]);
console.log("answers = ", results[1]);
console.log("checkins = ", results[2]);
});
如果action数组中的函数是异步工作的,怎么知道results数组中值的顺序?
【问题讨论】:
-
受欢迎并不意味着正确:-(
-
这不是这段代码的唯一问题。然而,在他的辩护中,他似乎正在利用这个来提出更好的解决方案。
-
我知道这是关于上面的代码,但是你可以使用像 Q.js 这样的 promise 库来确保序列:documentup.com/kriskowal/q/#tutorial/sequences
标签: javascript node.js asynchronous callback