javascript - 存储函数调用结果以供以后引用

标签 javascript jquery callback

我一直在尝试尽可能多地阅读有关 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/

相关文章:

javascript - Google Maps API - 数组和 InfoWindows 的问题

jquery - 滚动结束时调用函数

php - Laravel 5,单击表单提交按钮时不显示任何内容

javascript - 可以覆盖回调中使用的方法吗?

node.js - Node Twitter 库的多个回调函数

javascript - 从 javascript 中的选择性节点获取文本

javascript - javascript "detect"浏览器可以打印设置吗(特别是如果选择了打印背景颜色)?

javascript - 用javascript匹配回文中的单个字符?

javascript - 带有复选框菜单的 Jquery Slider

java - Android-SyncAdapter回调