1) У меня есть цепь JQuery тогда(), как это:Javascript then() chaining - which Deferred делает второй, а затем() соответствует?
someAjax().then(function(val) { console.log("done 1: " + val); return val + 1; },
function(val) { console.log("fail 1: " + val); return val + 2; },
function(val) { console.log("prog 1: " + val); return val + 3; }
).then(function(val) { console.log("done 2: " + val) },
function(val) { console.log("fail 2: " + val) },
function(val) { console.log("prog 2: " + val) }
)
Я понимаю, что эти три функции (три Args) по первого затем() соответствуют состояниям отсроченной объекта из someAjax().
Однако, я не понимаю, что отложенный объект выполняет три функции (args) второй, затем соответствуют? Например, что, если (или возможно, что) каждая из трех функций сначала, то() может вернуть свой собственный объект отложенного?
Я чувствую, что я могу неправильно понять что-то здесь. Оцените любые разъяснения.
////////////////////////////////////////////// //////
2) Я другой цепочки, как это:
$.getJSON(url).then(
doneFunction1,
errorFunction1
).then(
doneFunction2
});
doneFunction1 выглядит следующим образом:
function doneFunction1(val){
if(val > 1)
return $.ajax(url2);
}
так что это не всегда возвращает обещание, как вы см., в зависимости от val
. В случае, если он не возвращает Promise (скажем, val < 1), как проходит вторая? Это приведет к ошибке? Потому что, как я понимаю, нет обещания позвонить тогда(). Я предполагаю, что он может просто вызвать then() первого обещания $.getJSON
, но я могу ошибаться.
В принципе, я пытаюсь НЕ иметь второй then()
вообще, когда `val < 1 '. Является ли это возможным?
это относится к тому, что вы вернетесь из первого .then обещания – JordanHendrix
'.then' обычно занимает всего две функции, первый называется когда обетование разрешится, второе, когда оно отвергнуто? – adeneo
Отмечая, что вы используете jQuery, а не правильные обещания A +, здесь было бы очень важно! – adeneo