У меня возникли проблемы, чтобы выполнить следующую задачу. У меня есть три функцииДождитесь появления ajax для отображения результата
function f1(param1) {
var d = $.deferred();
// ajax call with data param1
d.resolve(res0, res1);
return d.promise();
}
function f2(param2) {
var d = $.deferred();
// ajax call with data param2
d.resolve(res2);
return d.promise();
}
function f3(param3) {
var d = $.deferred();
// ajax call with data param3
d.resolve(res3);
return d.promise();
}
Я бегу их так:
$.when(f1(param1),f2(pram2),f3(param3)).done(function(res,res2,res3){
});
Мое требование:
если res2 пустой прогон f2(res[1])
. когда-то сделали дисплей res[0] + f2(res[1]) + res3
еще дисплей res[0] + res2 + res3
Есть ли тот, кто может помочь мне с этим с помощью JQuery/обещаниям?
Спасибо
благодарим вас за ответ. в строке «return $ .when (res, res2, res3)» вы имеете в виду хорошо $ .when (f1 (p1), res2, f3 (p3)). Если это так, я думаю, что я отправлю еще один вызов ajax, чтобы получить результат, который у меня уже есть: res [0] и res [3]. res [0] и res3 готовы к отображению, которые не зависят ни от чего. Это только res2, который зависит от res [1] –
@ Bes-mM-bes нет, эта линия означает именно то, что я сказал. Когда вы передаете что-то, что не является обещанием «$ .when», оно неявно считается «разрешенным», поэтому передача '(res, prom, res3)' будет только ждать, когда среднее значение будет (повторно) разрешено - другое параметры будут переданы на вызов '.done' как нормальные значения. – Alnitak
Отлично! Оно работает. Спасибо. –