我必须与强制我链接请求的远程 API 进行交互。那是异步模式下的回调 hell :
// pseudocode: ajax(request_object, callback)
ajax(a, function() {
ajax(b(a.somedata), function() {
ajax(c(b.somedata), function() {
c.finish()
}
})
})
在同步模式下会更具可读性:
sjax(a)
sjax(b(a.somedata))
sjax(c(b.somedata))
c.finish()
但是 Sjax 是邪恶的 :) 我如何以nice 不那么邪恶和可读的方式做到这一点?
最佳答案
你可以有一个函数,它被传递一个整数来说明请求在哪一步,然后使用一个 switch 语句来确定下一步需要做什么请求:
function ajaxQueue(step) {
switch(step) {
case 0: $.ajax({
type: "GET",
url: "/some/service",
complete: function() { ajaxQueue(1); }
}); break;
case 1: $.ajax({
type: "GET",
url: "/some/service",
complete: function() { ajaxQueue(2); }
}); break;
case 2: $.ajax({
type: "GET",
url: "/some/service",
complete: function() { alert('Done!'); }
}); break;
}
}
ajaxQueue(0);
希望对您有所帮助!
关于javascript - 如何链接ajax请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/995529/