10

我可以使用 jQuery AJAX API 并进行同步调用吗?

4

2 回答 2

14

就像奥巴马会说:是的,你可以!

jQuery .ajax()

环境

async = false

在 .ajax() 处理程序中可以解决问题。

于 2010-05-31T09:20:54.757 回答
3

虽然 jQuery 可以通过设置 synch:false 属性来进行同步 AJAX 调用,但这会导致浏览器挂起,直到 AJAX 完成。使用像Frame.js这样的流控制库可以让您在不占用浏览器的情况下进行同步调用:

$.each(ajaxObjects, function(i, ajaxCall){
    Frame(function(next)){ // declare the callback next here

        ajaxCall.complete = function(data){
            // do something with the data
            next(); // go to the next ajax call
        }
        $.ajax(ajaxCall);

    });
}
Frame.init();

这一系列的 AJAX 调用将按顺序进行,每个都等待前一个完成,而不会使浏览器挂起。还具有额外的好处,即数据以可预测的顺序从 ajax 调用返回,而不是异步调用以随机顺序返回。

于 2012-04-28T16:42:21.540 回答