这可以在普通JS中完成,但是我建议使用
async模块,它是用于处理Node.js中异步代码的最流行的库。例如,使用
async.each:
var async = require('async');var courseIds = Object.keys(courses);// Function for handling each course.function perCourse(courseId, callback) { var course = courses[courseId]; // do something with each course. callback();}async.each(courseIds, perCourse, function (err) { // Executed after each course has been processed.});
如果要使用每次迭代的结果,则
async.map类似,但是将结果数组传递给回调的第二个参数。
如果您喜欢香草JS,则可以代替
async.each:
function each(list, func, callback) { // Avoid emptying the original list. var listCopy = list.slice(0); // Consumes the list an element at a time from the left. // If you are concerned with overhead in using the shift // you can accomplish the same with an iterator. function doOne(err) { if (err) { return callback(err); } if (listCopy.length === 0) { return callback(); } var thisElem = listCopy.shift(); func(thisElem, doOne); } doOne();}
(摘自我前段时间写的要点)
我强烈建议您使用异步库。异步很容易编写,类似
async.auto的功能非常出色。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)