javascript - 使 javascript 加载函数一个接一个地执行

标签 javascript jquery

我有一个函数,其中执行 2 个函数。当我在浏览器中查看它时,我得到 2 个加载符号,用于显示数据的加载。

我想知道是否有一种方法可以一个接一个地执行每个函数,因为我可以避免 2 个加载符号。我不想在第一个函数中调用第二个函数作为解决方案。

代码如下所示:

function ABCD() {
   function x();
   function y();
}

我希望函数 x() 完成其执行,然后从函数 y() 开始

最佳答案

假设你的函数返回 jQuery promise ,你可以这样做:

function ABCD() {
   // return the sequential promises
   return x().then(y);  // or return x().done(y); if you want a result after first one only
}

然后在外面你可以通过这样的调用等待两者:

ABCD().done(function(){
    alert("both complete");
});

如果xy进行ajax调用,只需返回它,因为它已经是一个 promise :

例如

  function x(){
      return $.ajax(...);
  }

  function y(){
      return $.ajax(...);
  }

工作示例 JSFiddle: http://jsfiddle.net/TrueBlueAussie/9e5rx2bx/2/

注意:该示例使用 DeferredsetTimeout 来模拟 ajax 加载。打开控制台以查看日志事件。

较旧的(非 promise 方式)将使用回调,但是确切的实现取决于您当前的实际代码(未显示):

这是自 jQuery 1.5 以来解决此类问题的首选方法。

关于javascript - 使 javascript 加载函数一个接一个地执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26674503/

相关文章:

javascript - 通过使用具有相同 id 的多行更改 optionsMenu 中的值来选中复选框

javascript - Laravel Mix 突然停止编译 SCSS 并写入空文件

jquery - 如何使用 Angular Bootstrap UI 在加载时填充第一个选项卡的内容

javascript - 简单的 jQuery Animate 示例 - 从一个 div 滚动到另一个 div

javascript - 在 Tapestry 中使用下拉建议搜索文本

javascript - 为什么javascript转义函数会忽略@*/+?

javascript - javascript时间重叠问题

javascript - 如何计算球碰撞墙壁时的坐标?

Jquery:更改第一个单词颜色跨度问题

javascript - 使用 JS 或 jQuery 区分两个容器