Как промисы Ember связаны с промисами в целом и, в частности, с промисами jQuery?

Несколько общих вопросов, которые помогут узнать о Ember Promise:

  1. Является ли ответом на приглашение Ember ответ Tildeio? Если нет, то чем они отличаются? Как они связаны?

  2. Есть ли в JavaScript «Promise» разные варианты, т. е. спецификации? Если да, то правда ли, что jQuery Promise использует один установленный тип спецификации Promise (что это такое? ?) и Ember RSVP.Promise использует другой набор спецификаций Promise, а именно Promises/A+?

  3. Как обстоят дела с ответами Ember Promise.then()< /a>, Tildeio RSVP Promise.then() и связан с deferred.then() jQuery? Чем Promise и then() в Ember отличаются от Promise и then() в jQuery? Это полезно знать, чтобы избежать ошибок.

Пример RSVP.Promise от Ember используется в RESTAdapter Ember в updateRecord, вызов ajax. Это несколько сообщений SO о jQuery Promise, затем() #1 и затем() #2. Я сейчас в замешательстве.


person HaoQi Li    schedule 06.07.2013    source источник


Ответы (1)


Это большая тема. Мы потратили несколько часов, обсуждая это на EmberNYC Meetingup в прошлом месяце. Если вы хотите понять промисы, отличным местом для начала будет проверка:

  1. Является ли RSVP Ember таким же, как RSVP Tildeio? Если нет, то чем они отличаются? Как они связаны?

В основном то же самое. RSVP Tildeio — это место, где можно найти активное развитие RSVP. Ember RSVP является копией этой библиотеки.

  1. Есть ли в JavaScript «Promise» разные варианты, т. е. спецификации? Если да, то правда ли, что jQuery Promise использует один набор спецификаций Promise (что это такое?), а Ember RSVP.Promise использует другой набор спецификаций Promise, а именно Promises/A+?

Конечно, он бывает разных вкусов, не столько по дизайну, сколько по тому, как все развивалось. Promises/A+ является одним из многих предлагаемые спецификации обещаний и, кажется, имеют наибольшую поддержку. Большинство реализаций обещаний (включая RSVP) совместимы с Promises/A+, что означает, что они проходят набор тестов< /а>.

Я не верю, что реализация jQuery Promise имеет другую спецификацию как таковую. Он почти, но не совсем совместим с Promises/A. По большей части они хорошо играют вместе. Есть несколько пограничных случаев, связанных с обработкой ошибок, когда промисы jQuery могут вести себя не так, как вы ожидаете. Доменик подробно рассказывает об этом в своем выступлении, вы также можете найти информацию об этом в этом посте: что хорошего в обещаниях js

Как связаны Promise.then() в Ember RSVP, Promise.then() в Tildeio RSVP и deferred.then() в jQuery?

Ember и Tildeio RSVP — это одно и то же. jQuery в основном такой же, за исключением того, что:

«Если обработчик ошибок возвращает что-то, кроме обещания, большинство реализаций считают ошибку обработанной и не распространяют ее. Однако в этих случаях jQuery не считает обработанную ошибку и все равно распространяет ее дальше». – что хорошего в промисах js

person Mike Grassotti    schedule 06.07.2013
comment
Спасибо, Майк. Кстати, вы сказали, что вы также можете найти информацию об этом в этом посте: вы что-то упустили или пост является просто ссылкой на обсуждение Доменика? - person HaoQi Li; 06.07.2013
comment
Должна быть ссылка на этот пост Брайана Климта: blog.parse.com/2013/01/29/ - person Mike Grassotti; 13.03.2014