В jquery у меня есть следующий код:
Часть A:
$.when(result = $.startAsyncRequest(arg)).done(function(){
console.log(result); // this should be called every time something is returned
if (result.hasOwnProperty("responseJSON")){
console.log("build frontend table using completed task");
}
});
Часть B:
jQuery.extend({
startAsyncRequest: function(arg){
console.log(arg);
$.when(result = makeAjaxRequest(arg)).done(function(){
var taskid = result.taskid;
var taskurl = "someurl" + taskid;
startProgressBar(taskurl, {
onSuccess: function(){
$.when(result2 = makeAjaxRequest(taskid)).done(function(){
console.log("received completed task");
return result2;
});
});
return "starting progress bar";
});
return "started task";
}
});
Часть A запускает функцию (Часть B), которая содержит несколько запросов постов ajax, все из которых откладываются. Один из этих запросов делается на основе обратного вызова после завершения индикатора выполнения.
Каждый раз, когда запускается startAsyncRequest, я хотел бы, чтобы он возвращался к части A и записывал результат в консоль. Поэтому я ожидаю, что он будет возвращаться туда несколько раз, но он вернется только один раз (первый запрос, «запущенная задача»).
Есть ли способ сделать это?
Я не хочу разбивать startAsyncRequest более чем на одну функцию, поскольку часть A многократно повторяется в моем коде, и я хочу, чтобы она охватывала все вызовы задач, индикатор выполнения и логику извлечения задач в одной функции .