美文网首页
Node 异步控制器 Async

Node 异步控制器 Async

作者: slimsallen | 来源:发表于2017-05-15 17:57 被阅读0次

nodejs是基于异步的写法,但是有时候当我们查询数据库的时候 我们需要上一个函数的返回值做参数,这样就陷入了回调地狱。 之前写api时候遇到 我需要for循环查询数据库 然后放在数组里 返回给前端。最后用到了 Async.GitHub地址

安装Async

npm install async

串行无关联

多个函数或方法要依次执行,但是他们之间并没有什么联系,只有先后的顺序,比如我要写一个文件,写完之后像用户发送邮件,这两者之间没有必然的联系,但是发邮件必须在写文件完成之后。
async里有一个方法series可以实现这一流程,代码实现如下:

var async = require('async');
console.time('series');
async.series({
    one: function(callback) {
        callback(null, 'one');//callback('i am err','one');异常处理
    },
    two: function(callback) {
        callback(null, 'two');

    },
}, function(error, result) {
    //最后结果
    console.log('error: ' + error);
    console.log('result: ' + result);
    console.timeEnd('series');
});

串行有关联

多个函数或方法执行,每一步执行时都需要上一步执行的结果当参数,所以就会有串行等待。async里有waterfall可以实现此场景:

var async = require('async');
console.time('waterfall');
async.waterfall([
    function(callback) {
        callback(null, 'one');
    },
    function(onearg, callback) {
        callback(null, onearg + '>>>two');
    },
    function(twoarg, callback) {
        callback(null, twoarg + '>>>three');
    },
    function(threearg, callback) {
        callback(null, threearg + '>>>four');
    }
], function(error, result) {
    console.log('error: ' + error);
    console.log('result: ' + result);
    console.timeEnd('waterfall');
});

继续学习中...

相关文章

网友评论

      本文标题:Node 异步控制器 Async

      本文链接:https://www.haomeiwen.com/subject/tnihxxtx.html