假设我有一个名为 makeRequest()
的函数,它向服务器发出 AJAX 请求。
现在假设我得到了应该发出此请求的次数,但我不能异步执行这些请求,而是同步执行。
例如,给定数字5,我将调用makeRequest()
,当它完成时,我将再次调用它,当它完成时,我将再次调用它.. .我最终应该调用它 5 次。
我不是 JavaScript 专家,但我发现使用回调处理异步调用很容易。
因此,我的 makeRequest()
函数采用一个 callback
参数,该参数将在请求成功时执行。
在之前的示例中,我必须发出 5 次请求,因此行为应如下所示:
makeRequest(function () {
makeRequest(function () {
makeRequest(function () {
makeRequest(function () {
makeRequest(function () {
});
});
});
});
});
我如何设计它,使其对于给我的任何参数(无论是 6 个、12 个甚至 1 个)表现相同?
PS:我尝试了很多方法,最常见的是创建 while 循环,等待完成的请求设置标志。所有这些方法都会让浏览器认为脚本崩溃并提示用户停止脚本。
最佳答案
简单,递归调用ajax请求,同时跟踪计数变量:
function makeRequest(count, finalCallback){
someAjaxCall(data, function(){
if(count > 1){
makeRequest(count - 1, finalCallback);
} else {
finalCallback && finalCallback();
}
});
}
finalCallback
是一个可选的回调(函数),将在所有请求完成时执行。
关于javascript - 同步发出多个ajax请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29010354/