首页 > 代码库 > 珠峰培训node正式课笔记 -- 【async】任务流程控制,异步流程控制

珠峰培训node正式课笔记 -- 【async】任务流程控制,异步流程控制

var async = require(async);
// series 串形任务
console.time(cost)
async.series({
    two:function(callback){
        setTimeout(function(){
            console.log(串形任务two);
            //第一个参数 错误原因,当为真时,接收函数err参数接收到原因,并定为报错,停止执行后边的任务
            callback(null,串形任务two 执行完毕);
        },1000)
    },
    one:function(callback){
        setTimeout(function(){
            console.log(串形任务one);
            callback(null,串形任务one 执行完毕);
        },2000)
    },
},function(err,seriesRes){//如果callback第一个参数为真,err接收到第一个参数,判为任务错误,终止后续任务
    console.log(err,seriesRes);
    console.timeEnd(cost)
})

//parallel 并行任务
// 传递给最终的回调函数的是按任务生命顺序排列,而不是完成顺序
console.time(cost_p)
async.parallel({
    two:function(callback){
        setTimeout(function(){
            console.log(并行任务two);
            //第一个参数 错误原因,当为真时,接收函数err参数接收到原因,并定为报错,停止执行后边的任务
            callback(null,并行任务two 执行完毕);
        },1000)
    },
    one:function(callback){
        setTimeout(function(){
            console.log(并行任务one);
            callback(null,并行任务one 执行完毕);
        },2000)
    },
},function(err,seriesRes){//如果callback第一个参数为真,err接收到第一个参数,判为任务错误,终止后续任务
    console.log(err,seriesRes);
    console.timeEnd(cost_p)
})

// waterfall 瀑布形任务
console.time(cost_w)
async.waterfall([
    function(callback){
        setTimeout(function(){
            console.log(瀑布形任务 1);
            //第一个参数 错误原因,当为真时,接收函数err参数接收到原因,并定为报错,停止执行后边的任务
            callback(null,咖啡);
        },1000)
    },
    function(res,callback){
        setTimeout(function(){
            console.log(瀑布形任务 2);
            callback(null,res++加糖);
        },1000)
    },
    function(res,callback){
        setTimeout(function(){
            console.log(瀑布形任务 3);
            callback(null,res++加牛奶);
        },1000)
    }
],function(err,seriesRes){//如果callback第一个参数为真,err接收到第一个参数,判为任务错误,终止后续任务
    console.log(err,seriesRes);
    console.timeEnd(cost_w)
})

//auto 多情况组合任务
// 例:做饭任务
console.time(做饭任务cost:)
async.auto({
    water:function(callback){
        callback(null,)
    },
    flour:function(callback){
        callback(null,面粉)
    },
    mix:[water,flour,function(res,callback){
        callback(null,res.water+"+"+res.flour++和面);
    }],
    stream:[mix,function(res,cb){
        cb(null,res.mix++蒸馒头)
    }]
},function(err,seriesRes){
    console.log(err,seriesRes);
    console.timeEnd(做饭任务cost:)
})

 

珠峰培训node正式课笔记 -- 【async】任务流程控制,异步流程控制