几分钟前我问过循环问题,请参阅Asynchronous for cycle in JavaScript。
这一次,我的问题是 - 是否有任何Node.js模块?
for ( /* ... */ ) {
// Wait! I need to finish this async function
someFunction(param1, praram2, function(result) {
// Okay, continue
})
}
alert("For cycle ended");
答案 0 :(得分:3)
难以将这些东西移到模块中吗?
编辑:更新了代码。
function asyncLoop(iterations, func, callback) {
var index = 0;
var done = false;
var loop = {
next: function() {
if (done) {
return;
}
if (index < iterations) {
index++;
func(loop);
} else {
done = true;
callback();
}
},
iteration: function() {
return index - 1;
},
break: function() {
done = true;
callback();
}
};
loop.next();
return loop;
}
exports.asyncFor = asyncLoop;
还有一个小测试:
// test.js
var asyncFor = require('./aloop').asyncFor; // './' import the module relative
asyncFor(10, function(loop) {
console.log(loop.iteration());
if (loop.iteration() === 5) {
return loop.break();
}
loop.next();
},
function(){console.log('done')}
);
休息取决于你,不可能使这100%通用。
答案 1 :(得分:1)
是的,您可以使用Async.js。
Async是一个实用程序模块 提供直截了当,强大的功能 与...合作的功能 异步JavaScript。虽然 最初设计用于 node.js,也可以直接使用 在浏览器中。