Я нахожусь в следующей ситуации. Мне нужно сделать 3 асинхронных вызова: call2 срабатывает только тогда, когда call1 завершен, а call3 срабатывает только при выполнении вызова2 (мне также нужно использовать отложенный объект из jQuery).jQuery отложен: создать цепочку с использованием условий
function call1() {
return $.ajax(...);
}
function call2() {
return $.ajax(...);
}
function call3() {
return $.ajax(...);
}
Ничего сложного на данный момент, я мог бы просто использовать функцию then().
call1().then(call2).then(call3)
Проблема состоит в том, что есть 2 условия (cond2 и cond3), который будет определять, является ли вызов 2 и call3 будут сделаны. Если бы я, чтобы описать его с помощью псевдокода она будет выглядеть следующим образом:
if cond2
if cond3
call1().then(call2).then(call3)
else
call1().then(call2)
else
if cond3
call1().then(call3)
else
call1()
Я знаю, что я могу решить мою проблему, написав программу, которая использует эту структуру, но он просто не кажется правильным.
Мой вопрос: как бы вы решили это эффективно, используя отложенный объект из jQuery? Спасибо заранее!
Что такое проблема с шаблоном 'if..else'? – guest271314
Значения условия известны в начале, или их результат зависит от асинхронных результатов? – trincot
Значения состояния известны с самого начала. – five