首页 > Web开发 > 详细

关于Node.js异步转同步

时间:2017-08-06 18:32:37      阅读:228      评论:0      收藏:0      [点我收藏+]

  用Node.js做开发我们有时候会很沉浸在它的异步回调机制中。发送一个请求,不管什么时候响应,我们写好一个对应的回调函数(callback),然后我们就可以进行下一步的操作。但是有时候我们又会陷入苦恼之中,比如说我必须在取得回调之后的数据之后才能进行接下来的操作,那么我们就要想办法转异步为同步了。

最常见的异步操作:

Async(parameters,function(){

  //回调操作

})

  但是如果在回调里面还有另外的回调,那我们就会陷入深深的回调泥潭里。步入正题,Node.js提供原生的Promise解决上述的问题(http://liubin.org/promises-book/):

function Async(){

  return new Promise(function (resolve, reject) {

    //异步操作,成功回调里面执行resolve,失败回调里面执行reject

  })

}

使用时:

Async().then(function(){

  

}).catch(function(){

  

})

另外安利一个好用的npm包:Async模块,里面提供了很多异步转同步的操作,个人用的最多的是waterfall:

async.waterfall([
  function(callback){ 
    callback(null, ‘one‘, ‘two‘); 
    console.log(‘1‘); 
  }, 
  function(arg1, arg2, callback){ 
    callback(null, ‘three‘); 
    console.log(arg1); 
    console.log(arg2); 
  }, 
  function(arg1, callback){ 
    // arg1 now equals ‘three‘ 
    callback(null, ‘done‘); 
    console.log(arg1); 
  } 
 ], function (err, result) {
   console.log(result);
   // result now equals ‘done‘
   // console.log(‘4‘);
});

上述的函数将会按顺序依次执行 

关于Node.js异步转同步

原文:http://www.cnblogs.com/KDSER/p/7295269.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!