Nik*_*kki 1 javascript ajax jquery
我有3个函数,在每个函数中我都有一个AJAX调用,它本质上是同步的.
function()
{
a();
b();
c();
}
a()
{
ajaxGet(globals.servicePath + '/Demo.svc/GetDemoList/' + sessionStorage.SessionId,function(data, success) {}, '', {async: false}, false);
}
Run Code Online (Sandbox Code Playgroud)
类似地对于b()和c().
现在我想等待执行这些调用,然后继续执行其他操作,因为这些操作基于我到达的结果.我怎么能这样做?
Gon*_*ing 15
async: false.这样就会导致黑暗的一面!一种解决方案是使用从Ajax调用返回的jQuery promise.
如果您想知道何时完成所有3个(以任何顺序异步),请使用$.when():
function()
{
$.when(a(), b(), c()).done(function(){
// Now do something else
});
}
Run Code Online (Sandbox Code Playgroud)
并获取每个方法返回Ajax调用的jQuery承诺:
function a()
{
return $.ajax(globals.servicePath + '/Demo.svc/GetDemoList/' + sessionStorage.SessionId,function(data, success) {}, ''...);
}
Run Code Online (Sandbox Code Playgroud)
我使用计时器模拟了一些虚假的"ajax调用"来显示:
JSFiddle: http ://jsfiddle.net/TrueBlueAussie/rqq41Lg3/
如果由于某种原因,您希望它们按顺序运行,那么请激活您的额外代码,您可以将它们链接起来 then
a().then(b).then(c).done(function(){
console.log("All done");
});
Run Code Online (Sandbox Code Playgroud)
JSFiddle: http ://jsfiddle.net/TrueBlueAussie/rqq41Lg3/1/