2016-04-07 4 views
1

У меня есть функция, которая, как ожидается, вызовет jquery.ajax и вернет ее в качестве обещания для дальнейшей обработки.Возвращение обещания вместо jQuery ajax call

Но иногда у него достаточно информации для продолжения синхронно, без вызова ajax. Ему все еще нужно вернуть обещание, чтобы выполнить контракт с абонентами. Что такое идиоматический способ сделать это?

E.g.

function f(x) { 
    return x? 
    $.ajax({url: "http://myServer", data: x, ...}) 
    : /* what should be here? */; 
} 
+0

'jQuery.when (...)' – Bergi

+0

вы пытались с 'Promise.resolve()' –

+0

что должно быть выполнено обещание с? Откуда берутся эти данные? – Bergi

ответ

1

Для создания полноценной JQuery обещания, вы можете использовать jQuery.when:

return $.when(…); 

Чтобы создать отвергнуто JQuery обещания, вам нужно использовать что-то немного более сложное (но, по крайней мере, вы можете приковать его):

return $.Deferrred().reject(new Error(…)).promise(); 
+0

Является ли $. Когда считается более «правильным» (читаемым, идиоматическим и т. Д.), То Promise.resolve (...)? –

+0

@DavidGoldfarb: Нет, он просто делает что-то другое - он возвращает обещание jQuery вместо правильного ES6 'Promise'. Поэтому, если вы используете jQuery, вы должны использовать '$ .when'. – Bergi

Смежные вопросы