如何使用单个ajax方法处理并发ajax响应

How to handle simultaneous ajax responses using single ajax method?

本文关键字:ajax 并发 响应 处理 方法 单个 何使用      更新时间:2023-09-26

处理ajax的方法

function ajaxMethod(){
    return $.ajax({
        url: ajaxUrl,
        type: "POST",
        dataType: "JSONP",
        jsonpCallback: ajaxCallback
    });
}

调用这个方法:

dD(ajaxMethod());
aA(ajaxMethod());
bB(ajaxMethod());
cC(ajaxMethod());

aa,bb,cc,dd方法有

promise.success(function (response) {
    console.log(response);
});

现在aA响应在bB函数中到来,bB响应在cc函数中到来,同时呼叫到来。也尝试使用async true没有发生任何事情。有什么建议吗?

对于jsonpCallback,你告诉jQuery使用一个特定的函数名作为回调函数(而不是生成一个唯一的),所以每次调用它时,你都会覆盖上一个函数。

只要去掉jsonpCallback: ajaxCallback


当你在它,删除type: "POST",,它是不兼容的JSONP

我想这就是你想要的。

这段代码使用返回的promise等待结果,然后将结果传递给其他函数。

ajaxMethod().success(function(response)
{
    dD(response);
});
ajaxMethod().success(function(response)
{
    aA(response);
});
ajaxMethod().success(function(response)
{
    cC(response);
});
ajaxMethod().success(function(response)
{
    dD(response);
});

你的aA, bB, cC和dD方法现在可以:

function <insertname>(response)
{
    console.log(response);
}

如果您希望以同步方式发送请求,请尝试以下操作:

var callBack = $.Callbacks();
callBack.add(dD(ajaxMethod()));
callBack.add(aA(ajaxMethod()));
callBack.add(bB(ajaxMethod()));
callBack.add(cC(ajaxMethod()));
callBack.fire();

上面的代码行将确保各自的ajax调用将被调用