我一直在尝试尽可能多地阅读有关 javascript 回调和 jquery 延迟对象的内容,但显然这些内容并不适合我。当我通读它并练习示例时,它似乎有一些模糊的意义,但是当我尝试将它应用到我的具体问题时,我只是碰壁了。如果有人能够理解我正在尝试做的事情并提供想法,我将不胜感激!
这是一些现有代码:
$(document).ready(function() {
firstFunction();
secondFunction();
});
为了简单起见,我不会深入探讨firstFunction()和secondFunction()的作用,只要说它们都执行异步工作就足够了。
这是我的问题: firstFunction() 依赖于准备就绪的文档,因此需要位于 $(document).ready(function() { } 内。 secondaryFunction() 不依赖于 $(document).ready(function(),而应该只依赖于 $(document).ready(function() { })在firstFunction完成后执行。我希望在$(document).ready(function() { } block 之前完成secondFunction()的所有计算,但仅在firstFunction()完成后执行。这样firstFunction和SecondFunction 将以更加视觉上无缝的方式执行。所以基本上,我想做类似以下伪代码的操作:
var deferredSecondFunction = secondFunction().compute().defer(); //perform computation for secondFunction but defer execution
$(document).ready(function() {
firstFunction().done.execute(deferredSecondFunction().execute()); //finally execute secondFunction once firstFunction has completed.
});
有人知道这是否可能吗?一个重要的警告是,我需要在没有 Javascript Promise 对象的情况下执行此操作,因为出于本问题范围之外的原因,我正在使用的 webkit 是旧版本。如果有人能帮助我理解这一点,我将不胜感激!
最佳答案
显示的代码使用回调函数和自调用匿名 JavaScript 函数,例如:
var calculatedObject;
(function(){
// Will be executed as soon as browser interprets it.
// write code here & save your calculations/operations
calculatedObject = { ... };
})();
function firstFunction(callback){
// Do stuff
callback();
}
function secondFunction(){
// Do more stuff
// Use your calculations saved in the calculated object.
}
$(document).ready(function(){
firstFunction(secondFunction);
});
这样第二个函数只会在第一个函数结束时被调用。
关于javascript - 存储函数调用结果以供以后引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40143849/