async同步异步

1.同步:
var async = require("async");
async.series([step1, step2, step3],
function(err, values) {
do somethig with the err or values v1v2v3
});
var async = require('async');
async.series([function(cb) {
step1(function(err, v1) {
// do something with v1
cb(err, v1);
}),
function(cb) {
step2(...)
},
function(cb) {
step3(...)
}],
function(err, values) {
// do somethig with the err or values v1/v2/v3
});
2.并行:
async.parallel([function(cb) {
t.fire('a400', cb, 400)
},
function(cb) {
t.fire('a200', cb, 200)
},
function(cb) {
t.fire('a300', cb, 300)
}],
function(err, results) {
log(’1 err: ‘, err); // -> undefined
log(’1 results: ‘, results); // ->[ 'a400', 'a200', 'a300' ]
});
3.瀑布:多个函数依次执行,且前一个的输出为后一个的输入
async.waterfall([function(cb) {
log('1: ', 'start');
cb(null, 3);
},
function(n, cb) {
log('2: ', n);
t.inc(n, cb);
},
function(n, cb) {
log('3: ', n);
t.fire(n * n, cb);
}],
function(err, result) {
log(’1 err: ‘, err); // -> null
log(’1 result: ‘, result); // -> 16
});

原文地址:https://www.cnblogs.com/yu-hailong/p/7439887.html