我一直在尝试尽可能多地阅读有关javascript回调和jquery延迟对象的信息,但显然事情并没有为我点击。当我通读它并练习例子时,它似乎有点模糊,但当我尝试将它应用于我的具体问题时,我只是碰壁了。如果有人能够理解我想要做的事情并提供想法,那将非常感激!
以下是一些现有代码:
$(document).ready(function() {
firstFunction();
secondFunction();
});
为了在这里保持简单,我不会进入firstFunction()和secondFunction()这样做,但只要说它们都执行异步工作就足够了。
这是我的问题: firstFunction()依赖于文档准备就绪,因此需要在$(document).ready(function(){}内部.firstFunction()不依赖于$(document).ready(function(),但是应该只在firstFunction完成后执行。我希望在$(document).ready(function(){}块之前执行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是旧版本。如果有人能帮助我理解这一点,将不胜感激!
答案 0 :(得分:1)
显示的代码使用回调函数和自调用匿名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);
});
这样第二个函数只会在第一个函数的末尾调用。
答案 1 :(得分:0)
你可以使用回调..
function f1(){
//do some stuff
}
function f2(callback){
// do some async stuff
callback();
}
f2(f1);
此示例将一个函数传递给另一个函数。第二个函数在准备就绪时调用第一个函数。