可撤销承诺的状态

时间:2014-02-14 14:01:46

标签: javascript promise ecmascript-6 cancellation

https://github.com/promises-aplus/cancellation-spec上最早的问题是(在撰写本文时)9个月。我真的找不到关于“标准”承诺的取消功能的可靠信息来源。

到目前为止看起来这个功能是在bluebird中实现的,但作为一个库开发人员,我不想让我的包与完整的promise实现相混淆。

我想做的只是传递一个承诺,并支持取消规范。

我在哪里可以找到这些信息?

1 个答案:

答案 0 :(得分:19)

可取消的承诺不会出现在ES6中,因为ES6的承诺非常小。

Promises / A +空间的取消工作已经停滞不前,因为我们等待图书馆的演变证明一种方法明显优越。最新的想法是this issue,这是大多数希望实施取消的图书馆似乎遵循(或多或少)。关键点是:

  • 取消作为拒绝的特例
  • 对取消的反应在链中向上传播,以及拒绝本身向下传播。

目前还不清楚你的意思是“简单地传递一个承诺,并支持取消规范”。你假设你的图书馆的消费者会把它投出来,你是否试图制作那些产品,但之后会以某种方式继承一些取消行为?这有点棘手,特别是因为取消通常取决于用于拒绝承诺的指定Cancellation构造函数。如果取消生态系统更加发达,那么这样做的方式可能会更加直接。

至于未来,嗯,它正在变化!前进的一条路线是有人在Promises / A +空间中支持取消提议的演变,从Q,RSVP,何时和Bluebird等主要图书馆获得实施者的支持。然后很多较小的图书馆可能会购买,你可能会有一些你可能依赖的东西。如果证明它很受欢迎,那么它也可能被认为是ECMAScript的承诺!

但这取决于很多人做了很多工作,所以我们会看看是否会发生:)。使用基础Promises / A +规范实现它是一种奇迹,但谁知道......它可能再次发生!