[英]Making dependent functions async using promises
我有兩個要進行async
功能,但一個功能取決於另一個。 這兩個函數本質上是否可能async
,但function b
在function a
之后執行?
當然。 有很多方法可以做到這一點。
如果您正在執行簡單的回調樣式:
funcA(paramsA,function(resultsA) {
// do some post-processing
funcB(paramsB, function(resultsB) {
// do some more post-processing
});
});
如果您實際上使用的是Promise(取決於您的樣式和庫),那么它會變得容易一些:
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) {
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.