javascript - 等到带有 ajax 调用的函数在 jquery 中完成执行

标签 javascript jquery ajax

我有 3 个函数,在每个函数中我都有一个本质上同步的 AJAX 调用。

function()
{
  a();
  b();
  c();
}
a()
{
   ajaxGet(globals.servicePath + '/Demo.svc/GetDemoList/' + sessionStorage.SessionId,function(data, success) {}, '', {async: false}, false);
}

对于 b() 和 c() 也是类似的。

现在我想等待这些调用的执行,然后继续其他操作,因为这些操作基于我在这里得到的结果。我怎样才能完成这项工作?

最佳答案

  • A:永远不要使用 async: false。那条路通向黑暗面!
  • B:见 A :)

一种解决方案是使用从 Ajax 调用返回的 jQuery promise 。

如果您想知道所有 3 项何时完成(以任何顺序异步),请使用 $.when():

function()
{
  $.when(a(), b(), c()).done(function(){
       // Now do something else
  });
}

并获取每个方法以返回 Ajax 调用的 jQuery promise :

function a()
{
   return $.ajax(globals.servicePath + '/Demo.svc/GetDemoList/' + sessionStorage.SessionId,function(data, success) {}, ''...);
}

我使用计时器模拟了一些虚假的“ajax 调用”来展示这一点:

JSFiddle: http://jsfiddle.net/TrueBlueAussie/rqq41Lg3/

如果出于某种原因,您希望它们按顺序运行,然后触发您的额外代码,您可以将它们与 then 链接起来

a().then(b).then(c).done(function(){
    console.log("All done");
});

JSFiddle: http://jsfiddle.net/TrueBlueAussie/rqq41Lg3/1/

关于javascript - 等到带有 ajax 调用的函数在 jquery 中完成执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29607893/

相关文章:

ajax - 网页上动态更新的图表 - 如何?

javascript - 是否可以从 AngularJS 中 $http.get 的成功方法返回一个值?

JavaScript-当我的脚本在头时无法更改样式

javascript - 将 sails.js 变量发送到 Javascript 文件

javascript - 获取错误消息以显示内联输入

jquery - Slide Toggle 无法正常工作(图标未正确更改)

javascript - 使用 Django、Ajax、jQuery 提交表单而不刷新页面?

javascript - 无法从 html 检索数据

javascript - 如何在 JavaScript 中从二进制数据创建文件对象

javascript - jQuery:检查哈希是否包含