koi*_*koi 3 loops asynchronous node.js node-async
所以说水果是一个包含4个项目的数组我所期望的是下面的代码会打印水果,每个水果之间有4秒的延迟.
var fruits = ['blueberries', 'strawberries', 'mango', 'peaches'];
async.forEach(fruits, functions(fruit, next) {
setTimeout(function() {
console.log(fruit);
}, 4000);
})
Run Code Online (Sandbox Code Playgroud)
实际行为是它等待4秒,然后打印整个列表.:\有谁知道如何实现我的预期行为?
async.forEach 并行运行数组,这意味着它将立即为数组中的每个项运行函数,然后当它们全部执行回调时,将调用回调函数(您未能包含).
在您的情况下,您希望一次一个地运行数组,或者在一系列中运行,因此您将需要该.eachSeries方法.
var fruits = ['blueberries', 'strawberries', 'mango', 'peaches'];
async.eachSeries(fruits, function (fruit, next) {
setTimeout(function() {
console.log(fruit);
next(); // don't forget to execute the callback!
}, 4000);
}, function () {
console.log('Done going through fruits!');
});
Run Code Online (Sandbox Code Playgroud)