处理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调用将被调用