我有一个函数,其中执行 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");
});
如果x
和y
进行ajax调用,只需返回它,因为它已经是一个 promise :
例如
function x(){
return $.ajax(...);
}
function y(){
return $.ajax(...);
}
工作示例 JSFiddle: http://jsfiddle.net/TrueBlueAussie/9e5rx2bx/2/
注意:该示例使用 Deferred
和 setTimeout
来模拟 ajax 加载。打开控制台以查看日志事件。
较旧的(非 promise 方式)将使用回调,但是确切的实现取决于您当前的实际代码(未显示):
这是自 jQuery 1.5 以来解决此类问题的首选方法。
关于javascript - 使 javascript 加载函数一个接一个地执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26674503/