【发布时间】:2012-08-21 18:18:59
【问题描述】:
我想异步迭代一个数组来解除阻塞。我正在使用 caolan/async 来实现这一点。测试这段代码时:
var ASync = require('async');
var arr = [];
for (var i = 0; i< 10; i++) {
arr[i] = i;
}
var buf = "howdy";
ASync.forEach(arr, function(item, callback) {
buf += item;
callback();
}, function(err) {
console.log(buf); // in the end
});
buf += "finished";
它显示了这个结果:
howdy0123456789
我认为它应该显示
howdyfinished0123456789
因为我希望异步库推迟执行。但为什么不是呢?
【问题讨论】:
-
我在这里阅读的关于该主题的一些答案建议使用
setTimeout(...,0)解决方法将执行交回主事件循环,但我真的不喜欢这个想法 - 那样你可以实际使用无论如何,JS 的内置Array.forEach方法。此外,我希望 Async 模块会在必要时执行此操作,并向我隐藏这些细节。
标签: node.js asynchronous