欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

nodejs 实现方法的同步

程序员文章站 2022-04-13 21:30:16
...

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