扩展函数(如 .all()、.final() 等是否有承诺标准?

Are there promise standards for extended functions like .all(), .finally(), etc

本文关键字:是否 标准 承诺 函数 all 扩展 final      更新时间:2023-09-26

扩展承诺函数是否有标准或新兴标准,例如.all().finally().catch().spread().settle()等?

我知道Promise A +规范,但这似乎只处理.then(),我找不到所有其他有用功能的标准。 我熟悉jQuery,Q和Bluebird,并且所有之间存在有意义的差异,这似乎应该是一个临时条件,因为随着时间的推移,一切都应该收敛到一个标准,因为真的没有理由为类似的功能使用不同的名称。 我知道jQuery甚至不完全兼容Promise A +,但显然至少要转向这个目标,但是所有其他有用的功能呢?

想要了解当前和未来标准开发的动机是知道各种库中提供的哪些当前功能更有可能与未来的标准保持一致,哪些不是,这样我就可以编写将来在这方面需要较少维护的代码。 我已经做了一堆搜索,这似乎很难找到(无论如何对我来说(。 我可以在 ES6 草案规范中看到Promise.all(),但没有看到任何其他规范。

是否有针对高级承诺函数(如.all().finally().catch().spread().settle()(的建议标准?

我知道承诺A +规格,但这似乎只处理.then()

是的。Promises/A+ 规范的目的是">详细说明 then 方法的行为,提供一个可互操作的基础,所有 Promises/A+ 符合 Promise 实现都可以依赖它来提供",并且还描述了 promise 同化,即如何将类似 promise 的对象转换为你自己的库的"真实"承诺。简而言之,它通过指定最小接口来关注互操作性

我找不到所有其他有用功能的标准。

是的。每个库都定义了自己的库。当特定功能存在于许多实现中(并复制到(时,就会出现"标准"。

想要了解当前和未来标准开发的动机是知道各种库中提供的哪些当前功能更有可能与未来的标准保持一致,哪些不是,这样我就可以编写将来在这方面需要较少维护的代码。

观看大型实现的问题讨论可能是最好的主意。但是,提供的大多数功能都相对容易填充。

黄金标准将是ES6和ES7。定期查看论文讨论邮件列表,了解功能讨论、用法问题和新草稿。

我可以在 ES6 草案规范中看到 Promise.all((,但没有看到任何其他规范。

如果您仔细观察,"承诺"部分详细介绍:

  • 构造函数PromisePromise.rejectPromise.resolve
  • Promise.allPromise.race
  • Promise.prototype.catchPromise.prototype.then

.finally().catch().spread().settle()

  • finally在es討論上討論過(例如,這裡(,但可能不會進入ES6。
  • 有关catch见上文
  • spread被点差运算符取代和解构
  • settle可以使用all来实现,或者至少使用非常接近all规范的算法