Мне нужно задержать каждый вызов Ajax до тех пор, пока не будет выполнена предыдущая функция (hashcode.Sign()
). К сожалению, мой код не дожидался завершения hashcode.Sign()
, и это все испортило, поскольку эта функция создает новый сеанс и не может быть перезаписана для работы. Как мне это сделать? Я новичок в объектах с отсрочкой, поэтому прошу прощения за недостаток знаний.Как выстроить jQuery отложенные объекты?
for (var l = 0; l < fileArray.length; l++) {
var d = new jQuery.Deferred();
d.resolve(openDdoc(fileArray[l].url, $pid, fileArray[l].id));
d.done(function() { console.log('done'); });
}
function openDdoc(url, pid, fid) {
var def = new jQuery.Deferred();
$.when(def).done(function() { console.log('Function completed!'); });
def.resolve($.ajax({
url: '/open-ddoc',
type: 'post',
async: false,
data: {doc: url, pid: pid, fid: fid},
}).done(function (data) {
hashcode.Sign();
}).fail(function(data) {
console.log('this shit failed');
}));
}
hashcode.Sign()
функция включает в себя еще несколько вызовов Ajax и вызовы других функций. Я могу включить его позже, если понадобится. Я знаю, что смогу решить все это с помощью setTimeout()
, но это был бы не мой первый выбор.
Да, пожалуйста, укажите 'hashcode.Sign()'. Важно, чтобы оно было написано правильно. –