如何使“do while”循环(其停止条件)依赖于 AJAX 调用的回调?

And*_*iga 1 javascript ajax jquery do-while

考虑以下代码:

var x = 0;
do {
    $.ajax({ 
    type: "POST", 
    url: someurl,
    dataType: 'xml',
    data: xmlString, 
    success: function(xml) { 
             x++;
    }

} while(x<10);
Run Code Online (Sandbox Code Playgroud)

当然,这不起作用,因为将向“someurl”发出数千个请求,那么我将如何更改此代码以使条件do while取决于异步 HTTP 请求的回调?换句话说,如何让 do-while 循环仅在调用请求回调时继续?因此只会进行 11 次迭代,而不是数千次。

syn*_*ync 5

你可以这样重写:

var x = 0;

function ajaxCall() {
    $.ajax({ 
    type: "POST", 
    url: someurl,
    dataType: 'xml',
    data: xmlString, 
    success: function(xml) { 
        x++;
        if (x<10) ajaxCall();
        else afterAjaxCall();
    }
}

function afterAjaxCall() {}
Run Code Online (Sandbox Code Playgroud)

这样,该方法在成功十次时会调用自身,然后调用“after”方法继续执行其他代码。