Существуют ли стандарты обещания для расширенных функций, таких как .all(),.finally() и т.д.

Существуют ли стандарты или новые стандарты для расширенных функций обещания, таких как .all(), .finally(), .catch(), .spread(), .settle() и т.д.

Я знаю спецификацию Promises A +, но, похоже, только имеет дело с .then(), и я не могу найти стандарты для всех других полезных функций. Я знаком с jQuery, Q и Bluebird, и между ними есть значимые различия, которые, похоже, должны быть временным условием, так как все должно со временем сходиться со стандартом, поскольку на самом деле нет причин иметь разные имена для подобных функций. Я знаю, что jQuery даже не полностью совместим с Promises A +, но, по-видимому, это заявленная цель, по крайней мере, перейти к этому, но как насчет всех других полезных функций?

Моя мотивация к желанию понять, как выглядит текущая и будущая разработка стандартов, заключается в том, чтобы знать, какие текущие функции, предлагаемые в различных библиотеках, с большей вероятностью согласуются с будущими стандартами и которые не так, я могу написать код, который понадобится меньше обслуживания в этой области в будущем. Я сделал кучу поиска, и мне кажется, что это трудно найти (для меня все равно). Я вижу Promise.all() в спецификации спецификации ES6, но не вижу других.

Существуют ли предлагаемые стандарты для расширенных функций обещания, таких как .all(), .finally(), .catch(), .spread() и .settle()?

Ответ 1

Я знаю о спецификации Promises A +, но это, похоже, имеет дело с .then()

Да. Цель Promises/A + spec состоит в том, чтобы "подробно описать поведение метода then, предоставляя совместимую базу, которая может быть реализована всеми реализационными реализациями Promises/A + зависит от того, чтобы обеспечить", а также описывает обещание ассимиляции, то есть как преобразовать объект, похожий на обещание, в "реальное" обещание вашей собственной библиотеки. Одним словом, он фокусируется на взаимодействии, указывая минимальный интерфейс.

Я не могу найти стандарты для всех других полезных функций.

Да. Каждая библиотека определяет свою собственную. "Стандарты" появляются, когда какая-либо особенность присутствует (и копируется) для многих реализаций.

Моя мотивация к желанию понять, как выглядит текущая и будущая разработка стандартов, заключается в том, чтобы знать, какие текущие функции, предлагаемые в различных библиотеках, с большей вероятностью согласуются с будущими стандартами и которые не так, я могу написать код, который понадобится меньше обслуживания в этой области в будущем.

Вероятно, просмотр проблемных обсуждений больших реализаций - лучшая идея. Однако большинство предлагаемых функций относительно легки для polyfill.

Золотым стандартом будут ES6 и ES7. Регулярно проверяйте список рассылки esdiscuss для обсуждения функций, вопросов об использовании и новых черновиков.

Я вижу Promise.all() в спецификации спецификации ES6, но не вижу других.

Если вы посмотрите более внимательно, раздел обещания:

  • Конструктор Promise, Promise.reject и Promise.resolve
  • Promise.all и Promise.race
  • Promise.prototype.catch и Promise.prototype.then

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

  • finally обсуждался на esdiscuss (например, здесь), но, вероятно, не попадет в ES6.
  • см. выше для catch
  • spread заменяется оператором спреда и деструктурированием
  • settle может быть реализован с помощью all или, по крайней мере, с использованием алгоритма, очень близкого к all spec