2016-03-09 3 views
1

У меня возникли проблемы с пониманием следующий код:.

var x = $.ajax({ 
    url : "sample_url", 
    dataType : "json", 
    data : { 
     "invalidate_cache" : true 
    } 
}); 

Теперь, если я

var y = x.then(); 

Он возвращает такая же функция, как x. Кроме того, что было бы иначе, если бы х был присвоен следующим образом (кроме «Привет 1» получать отпечатаны в АЯКСЕ возвращения успеха):

var x = $.ajax({ 
    url : "sample_url", 
    dataType : "json", 
    data : { 
     "invalidate_cache" : true 
    } 
}).then(function(data){console.log("Hello 1")}; 
+0

'x' всегда будет обещано, возвращено' $ .ajax'. Обещания можно связать с помощью 'then()'. Вопрос трудно ответить так, как его спрашивают. У вас были разные ожидания относительно того, что будет 'x'? – charlietfl

+0

это называется цепочки. см. http://stackoverflow.com/questions/1099628/how-does-basic-object-function-chaining-work-in-javascript – Hacketo

+0

@charlietfl Да. Я ожидаю разные определения для «x», когда ему присваивается $ .ajax() по сравнению с $ .ajax(). Then() Я хочу знать концепцию таких деклараций. –

ответ

3

Оба ajax и then функция будет возвращать вам обещание. Я не хочу объяснять весь механизм обещаний, но чтобы ответить на вопрос, разница между первым и вторым x заключается в том, что первый будет выполняться сразу после разрешения вызова ajax, а второй - после указанной функции как параметр в функции then (обратите внимание, что функция then будет выполнена после вызова ajax ... это называется цепочкой).

+0

Итак, оба 'ajax' и функция «then» возвращает ** то же ** обещание? –

+0

Нет, это был бы другой экземпляр. –

+0

Спасибо. Я посмотрел на цепочку, и это очистило мои сомнения –

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