Javascript 使用承诺使依赖函数异步
我有两个函数想使Javascript 使用承诺使依赖函数异步,javascript,html,Javascript,Html,我有两个函数想使异步,但一个函数依赖于另一个函数。是否两个函数本质上都是异步的,但函数b在函数a之后执行 当然。有很多方法可以做到这一点 如果您正在执行简单的回调样式: funcA(paramsA,function(resultsA) { // do some post-processing funcB(paramsB, function(resultsB) { // do some more post-processing }); }); 如果您实际使用的是promis
异步
,但一个函数依赖于另一个函数。是否两个函数本质上都是异步的
,但函数b
在函数a
之后执行 当然。有很多方法可以做到这一点
如果您正在执行简单的回调样式:
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
});
});
如果您可以连锁承诺(取决于您的承诺实施):
但以上取决于A和B之间正确传递的参数
我最喜欢的是使用草兰的伟大异步库,因为这样您就可以轻松地执行以下操作:
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) {
});
因此,如果我的两个函数是正在运行的()和使用承诺保存的(),它将类似于funcA()。然后(函数(resultsA){is_running();funcB()。然后(函数(resultsB){is_saved};});这是正确的吗?是的,尽管您可能能够链接它们,这取决于从一个参数到另一个参数(以及您的Promissions库是否支持链接)。请参见上面的第二个示例。
async.waterfall([
function(cb){funcA(paramsA).then(cb);},
function(resultsA,cb){funcB(paramsB).then(cb);}
],function(err,resultsB) {
});