一.本人推荐的是类库: async 点击跳转到官方文档.
二.实现同步的方法: async.series 该方法可以实现多个函数同步执行.例如:
async.series([
function(callback){
函数一
},
function(callback) {
函数二
}
],
function(err,results){
所以函数执行完成或发生错误时的回调.
})
第一个参数是一个数组代表要执行函数.第二个参数为回调函数.
三. 实现循环的同步.async.concat 该方法可以实现.例如:
async.concat(note_info, function (item, callback) { },function (err, data) {});
该方法有三个参数,第一个参数可以是数组或对象.第二个参数是个函数,主要对第一个参数进行处理.第三个参数是回调函数.
四.结合上面执行的具体例子:
async.series([
function(callback){
note.get(null,function(err,data) {
if (err) {
return res.json({status: 500, message: '后台错误'})
}
note_info = data;
callback(null,data)
})
},
function(callback) {
async.concat(note_info,
function (item, callback) {
register.get({_id: new ObjectID(item.user)}, function (err, user) {
if (err) {
return res.json({status: 500, message: '后台错误'})
}
if (user && user.length > 0) {
item.user = user;
callback(null, item)
}
});
},
function (err, data) {
callback(null,data)
});
}
],
function(err,results){
res.json({status: 200, data: results[0]})
})
上面就是一个需要首先从note里面取出数据,然后根据note里面的数据去 register里面取数据,最后将数据合并起来的一个例子.
本文介绍了 Async.js 这个强大的 JavaScript 异步操作库。详细解释了如何使用 async.series 和 async.concat 方法来实现任务的串行和并行执行。通过具体实例展示了如何先从 note 数据表获取数据,再根据这些数据查询 register 表,并最终整合所有数据的过程。
348

被折叠的 条评论
为什么被折叠?



