15

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

现在看起来该功能已在bluebird中实现,但作为库开发人员,我不想用完整的 Promise 实现来弄乱我的包。

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

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

4

1 回答 1

19

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

Promises/A+ 空间中取消的工作已经停滞,因为我们等待库的演变来证明一种方法明显优越。最新的想法是在这个问题上,这是大多数希望实现取消的库似乎都遵循的(或多或少)。关键点是:

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

目前尚不清楚您所说的“简单地通过类似承诺并支持取消规范”是什么意思。您是否正在尝试生成 thenables,假设您的图书馆的消费者会强制转换它,但之后会以某种方式继承一些取消行为?这有点棘手,特别是因为取消通常取决于Cancellation用于拒绝承诺的指定构造函数。如果取消生态系统更加发达,那么执行此操作的方法可能会更加直接。

至于未来,嗯,它在不断变化!前进的一条途径是让某人在 Promises/A+ 空间中支持取消提案的演变,从 Q、RSVP、when 和 Bluebird 等主要库中获得实施者的支持。然后很多较小的图书馆可能会购买,并且您可能会依赖一些东西。如果证明它很受欢迎,它可能也会被考虑用于 ECMAScript 承诺!

但这取决于很多人做了很多工作,所以我们会看看它是否会发生:)。在基本 Promises/A+ 规范中发生这种情况是一种奇迹,但谁知道呢……它可能会再次发生!

于 2014-02-14T14:56:54.743 回答