Въпрос за jQuery заявките, връщат ли promise ?


2
Неща не ми е ясно jQuery заявките дали връщат promise, защото имат then(), но на няколко места видях колеги да използват rsvp promise, който връща ajax(). И се чудя, това не е ли обвиване на един promise в друг ?



Отговори



10

Да, връщат promise, по-специално jQuery.ajax(), jQuery.get() и jQuery.post(). Т.е. не е нужно да се обвиват специално с друг promise. Върнатия от тях обект е Promise и съответно за него може да се закачат .then(), .done(), .fail() със chaining. Това значи, че дори не е нужно да се подава successCallback и errorCallback като параметър, а може да се подадат така:

$.get(url)
    .done(successHandler)
    .fail(errorHandler);
 
$( "#id" ).load(url) не връща promise, но той има имплицитен callBack - когато заявката се изпълни, подадения елемент се попълва с върнатите данни.

 


от neutrino (3376 точки)


0
Точно този отговор търсих, благодаря много!

от NikolaB (150 точки)


0

$.ajax работи асинхронно. Виж jqury документацията скролни съвсем малко надолу и прочети за async 


от Vazzzz (1380 точки)


1

За jQuery promise-и ти трябва deferred. Ето линка http://api.jquery.com/category/deferred-object/


от victor.velchev (1225 точки)


0
Става въпрос за jQuery ajax заявки, а не по принцип за jQuery promise. Заявките вътрешно използват точно този deferred обект за да си върнат promise.

от neutrino (3376 точки)