关于Node.js异步转同步

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Node.js异步转同步相关的知识,希望对你有一定的参考价值。

  用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异步转同步的主要内容,如果未能解决你的问题,请参考以下文章

Node.js 异步同步

Node.js 同步与异步

Node.js - 我啥时候应该做异步的事情,啥时候做同步

同步和异步编程有啥区别(在node.js中)

node.js学习读写文件(同步异步)

node.js同步及异步读取写入删除文件1