我有两个函数,我想要async
,但一个函数依赖于另一个函数。这两个函数本质上是async
,function b
之后是function a
执行吗?
答案 0 :(得分:0)
不确定。有很多方法可以做到这一点。
如果您正在使用简单的回调样式:
funcA(paramsA,function(resultsA) {
// do some post-processing
funcB(paramsB, function(resultsB) {
// do some more post-processing
});
});
如果您实际使用的是promises(取决于您的风格和库),那么它可以更容易一些:
funcA(paramsA).then(function(resultsA) {
// do some post-processing
funcB(paramsB).then(function(resultsB) {
// do some more post-processing
});
});
如果你可以链接承诺(取决于你的承诺实施):
funcA(paramsA).then(funcB).then(function(resultsB) { ... });
但上述内容取决于A和B之间正确传递的参数。
我最喜欢的是使用caolan的伟大异步库https://github.com/caolan/async,因为这样你可以很容易地做到:
async.series([
function(cb){funcA(paramsA).then(cb);},
function(cb){funcB(paramsB).then(cb);}
],function(err,results) {
});
或者如果您需要其中一个的结果:
async.waterfall([
function(cb){funcA(paramsA).then(cb);},
function(resultsA,cb){funcB(paramsB).then(cb);}
],function(err,resultsB) {
});