处理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没有任何反应。 有什么建议吗?
答案 0 :(得分:1)
使用jsonpCallback
,您告诉jQuery为回调函数使用特定的函数名称(而不是生成唯一的函数名称),因此每次调用它时,都会覆盖以前的函数。
只需删除jsonpCallback: ajaxCallback
。
当您使用它时,请删除type: "POST",
,它与JSONP不兼容。
答案 1 :(得分:0)
我认为这就是你所追求的。
此代码使用返回的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);
}
答案 2 :(得分:-1)
如果您希望您的请求以同步方式进行,请尝试以下操作:
var callBack = $.Callbacks();
callBack.add(dD(ajaxMethod()));
callBack.add(aA(ajaxMethod()));
callBack.add(bB(ajaxMethod()));
callBack.add(cC(ajaxMethod()));
callBack.fire();
上面的代码行将确保相应的ajax调用将被调用。