簡體   English   中英

使用Promise使相關函數異步

[英]Making dependent functions async using promises

我有兩個要進行async功能,但一個功能取決於另一個。 這兩個函數本質上是否可能async ,但function bfunction 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM