当前单击我的应用程序中的链接之一会触发 AJAX 调用 (GET),如果成功,则会触发第二个,如果成功,则第二个会调用第三个。
这样,当单击链接当前正在进行时,可以通知用户进程的哪一部分已启动。
因此,在 Django 项目的模板文件中,单击回调正文中提到的链接,如下所示:
$("#the-link").click(function(item)) {
// CALL 1
$.ajax({
url: {% url ajax_call_1 %},
data: {
// something
}
})
.done(function(call1Result) {
// CALL 2
$.ajax({
url: {% url ajax_call_1 %},
data: {
// call1Result passed here to CALL 2
}
})
.done(function(call2Result) {
// CALL 3
$.ajax({
url: {%url ajax_call_3 %},
data: {
// call2Result passed here to CALL 3
}
})
.done(function(call3Result) { // expected result if everything went fine
console.log("wow, it worked!");
console.log(call3Result);
})
.fail(function(errorObject) {
console.log("call3 failed");
console.log(errorObject);
}
})
.fail(function(errorObject)) {
console.log("call2 failed");
console.log(errorObject);
}
})
.fail(function(errorObject) {
console.log("call1 failed");
console.log(errorObject);
});
});
这对我来说很好。问题是,如果用户关闭浏览器并且调用未完成(因为完成所有三个调用需要一些时间),我想防止中断以下调用,因为 Django 视图函数中有一些额外的逻辑称为在每个 GET 请求中。
例如,如果用户在 CALL 1 期间单击链接并关闭浏览器,是否有可能以某种方式继续执行以下 CALL 2 和 CALL 3?
我知道通常我可以使用 Celery Task 来处理该功能,但是在这里提到的链式调用仍然可以吗?
任何帮助深表感谢!