存储函数调用结果以供稍后的反馈

时间:2016-10-20 01:01:54

标签: javascript jquery callback

我一直在尝试尽可能多地阅读有关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是旧版本。如果有人能帮助我理解这一点,将不胜感激!

2 个答案:

答案 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);

此示例将一个函数传递给另一个函数。第二个函数在准备就绪时调用第一个函数。