nodejs 实现方法的同步

本文介绍了 Async.js 这个强大的 JavaScript 异步操作库。详细解释了如何使用 async.series 和 async.concat 方法来实现任务的串行和并行执行。通过具体实例展示了如何先从 note 数据表获取数据,再根据这些数据查询 register 表,并最终整合所有数据的过程。

一.本人推荐的是类库: 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里面取数据,最后将数据合并起来的一个例子. 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值