【问题标题】:Is there any symbol for Promise status?Promise 状态是否有任何符号?
【发布时间】:2019-11-05 10:56:21
【问题描述】:

由于有一个名为 Promise.allSettlednew Promise combinator,我有兴趣根据 Promises 的解析状态执行一些代码逻辑。

例如:

Promise.allSettled([
    callApi("http://example.com/wishlist"),
    callApi("http://example.com/brands")
])
.then(([wishlist, brands]) => {
    if(brands.status === "failed"){
        notifyMe()
    }
})

如您所见,我正在使用静态值来比较 Promise brands.status === "failed" 的解析状态

你可以称我为偏执狂,但 JavaScript 是如何演变这个值的,将来可能会发生变化,我希望有一些不那么静态的东西。

我的问题是:是否有任何 Symbol.PromiseRejected|Symbol.PromiseResolved 或封装承诺解决方案的相关内容?

【问题讨论】:

    标签: javascript promise ecmascript-next


    【解决方案1】:

    你可以称我为偏执狂,但 JavaScript 如何演变这个值可能会在未来发生变化

    不,不会。 JS 将(需要)保持向后兼容,这永远不会改变。也没有理由重命名 .status 属性,它不像这样的结果对象(或迭代器结果对象等)的属性名称会与任何新的东西发生冲突。

    我的问题是:是否有任何 Symbol.PromiseRejected|Symbol.PromiseResolved 或封装承诺解决方案的相关内容?

    不,没有。反正它们不是符号。

    如果您绝对偏执,您可以write your own trivial allSettled function 控制结果对象的形状,或者您可以编写isRejected(result)isFulfilled(result) 辅助函数在任何地方调用,以便在不太可能发生的情况下一些改变你只需要改变一行代码。

    【讨论】:

      猜你喜欢
      • 2018-12-07
      • 2012-08-27
      • 2014-07-20
      • 1970-01-01
      • 2011-04-19
      • 2020-04-25
      • 1970-01-01
      • 2016-09-07
      • 1970-01-01
      相关资源
      最近更新 更多