簡體   English   中英

處理承諾鏈中的早期回報的最佳方法?

[英]Best way to handle early returns in chains of promises?

在Bluebird中處理早期回報而又不會引發錯誤的最佳方法是什么。 例如,我在以下條件中有條件:

things.find(1)
  .then(function(thing) {
    if (thing.condition === true) {
      return thing
    } else {
      // early return?
    }
  })
  .then(function(thing) {
    return doStuff(thing)
  })

.then鏈一旦形成,其自然行為便是隨着其每個階段的逐步建立而逐漸進行直至完成。

對於“早日歸來”(雖然不是一個好短語,但我們知道您的意思),您有以下三種選擇:

  • 引發錯誤或返回被拒絕的承諾,以繞過所有成功處理程序,直到下一個捕獲(或鏈的末尾)
  • 返回保證永不兌現的承諾-例如, return new Promise()
  • 組成.then鏈響應(Esailija的答案)
things.find(1).then(function(thing) {
  if (!thing.condition) return;
  return doStuff(thing)
    .then(...);
    .then(...);
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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