Какие аспекты библиотеки промисов не охватываются спецификацией? Какие вещи различаются между реализациями?
Пожалуйста, проиллюстрируйте примерами реальных различий (например, между Bluebird и Q).
Какие аспекты библиотеки промисов не охватываются спецификацией? Какие вещи различаются между реализациями?
Пожалуйста, проиллюстрируйте примерами реальных различий (например, между Bluebird и Q).
Почти все. Спецификация Promises/A+ предназначена для взаимодействия с промисами, она построена таким образом, что библиотеки промисов (а теперь и нативные промисы) могут общаться друг с другом. Идея состоит в том, чтобы можно было предсказать, как ведет себя промис, и определить, как промисы ассимилируются другими библиотеками.
Цитирую спецификацию:
Эта спецификация детализирует поведение метода
then
, предоставляя интероперабельную основу, на которую можно положиться во всех реализациях обещаний, совместимых с Promises/A+. Таким образом, спецификацию следует считать очень стабильной. Хотя организация Promises/A+ может время от времени пересматривать эту спецификацию с небольшими изменениями, обеспечивающими обратную совместимость, для решения недавно обнаруженных крайних случаев, мы будем интегрировать большие или обратно несовместимые спецификации только после тщательного рассмотрения, обсуждения и тестирования. Наконец, базовая спецификация Promises/A+ не касается того, как создавать, выполнять или отклонять обещания, а вместо этого фокусируется на обеспечении интероперабельного метода. Будущая работа в сопутствующих спецификациях может затронуть эти вопросы.
Не распространяется следующее:
.all
).Например, Bluebird и Q полностью относятся к категории Promises/A+, но во многих из них различаются:
this
к области видимости через .bind
и методы массива обещаний (.map
, .reduce
, .filter
и т. д.).