nodejs 实现方法的同步

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

猜你喜欢

转载自975156298.iteye.com/blog/2380283