在javascript中创建就绪函数时调用

阿曼B

我对 javascript 比较陌生,我正在尝试清理我的原型代码,因为它嵌套了很深的回调层,而且很难阅读。我正在努力实现这样的目标:

GoogleMaps.ready(map_id_name, function(map) {
    g_map = map.instance;
})

...

call_when_ready(g_map, set_map_viewport);
call_when_ready(g_map, create_markers);
call_when_ready(g_map, update_icons);
call_when_ready(g_map, update_geometry_display);
call_when_ready(g_map, update_ui_display);  

我知道我可以在 GoogleReady 回调中移动所有 call_when_ready ,但这是一个简化的示例,call_when_ready在另一个回调中调用。

所以我想出了这个功能,但它不起作用:

function call_when_ready(variable, callback) {

    let interval = setInterval(() => 
    { 
        if (variable != undefined && variable != null) {
            clearInterval(interval);
            callback();
        }

    }, 3000);
}

即使g_map正在填充变量,它也始终显示为 null 我怎样才能以干净的方式实现这一目标?我也愿意使用 jQuery,但是 Promise 和 Deffer ed 对于一些琐碎的事情来说似乎太多了。或者也许有更好的方法,例如链接回调,我不知道:

function().finished(function).finished(alert(""));
克里斯·G

如果不是传递变量来检查,而是传递一个返回它的函数,它会起作用:

/* mockup */
var g_map;
var map_id_name = "example";
var GoogleMaps = {
  ready: (a, f) => {
    f({
      instance: 1
    });
  }
}

// simulate map being ready after 2.5 seconds
setTimeout(() => {
  GoogleMaps.ready(map_id_name, function(map) {
    g_map = map.instance;
    console.log("g_map set");
  });
}, 2500);

function call_when_ready(getVariable, callback) {
  let interval = setInterval(() => {
    if (getVariable()) {
      clearInterval(interval);
      callback();
    }
  }, 2000);
}

function getGMap() {
  return g_map;
}

call_when_ready(getGMap, set_map_viewport);
call_when_ready(getGMap, create_markers);

function set_map_viewport() {
  console.log("set_map_viewport");
}
function create_markers() {
  console.log("create_markers");
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ng-repeat完成时调用JavaScript函数

来自分类Dev

在动态创建的html中调用javascript函数

来自分类Dev

在元素加载时调用JavaScript函数

来自分类Dev

如何在JavaScript中的方法中的addEventListener和全局函数中的removeEventListener时调用removeEventLisener

来自分类Dev

在Swift中完成动画时调用函数

来自分类Dev

JavaScript函数评估自身并同时调用自身

来自分类Dev

在Odoo v8中,如何在给定表中创建记录时调用一个函数?

来自分类Dev

Javascript:函数是在页面加载时调用的,而不是onclick / onsubmit

来自分类Dev

javascript:同时调用同一函数?

来自分类Dev

如何在初始页面加载时调用JavaScript函数

来自分类Dev

创建实例失败时调用的析构函数?

来自分类Dev

未选择特定广播时调用javascript函数

来自分类Dev

如何创建调用某个函数时调用该函数的函数?

来自分类Dev

同时调用支持Bean和Javascript函数

来自分类Dev

绑定时调用并循环JavaScript函数

来自分类Dev

下拉菜单更改时调用Javascript函数

来自分类Dev

如何在菜单项选择时调用Javascript函数?

来自分类Dev

值更改时调用函数javascript

来自分类Dev

表更改内容时调用Javascript函数

来自分类Dev

表更改内容时调用Javascript函数

来自分类Dev

在Swift中完成动画时调用函数

来自分类Dev

向下滚动特定div时调用JavaScript函数?

来自分类Dev

单击按钮时调用Javascript函数

来自分类Dev

在JavaScript中同时调用函数和修改变量

来自分类Dev

在主脚本中创建JavaScript类函数调用函数

来自分类Dev

jQuery中的if语句失败时调用函数

来自分类Dev

在函数加载时调用函数

来自分类Dev

为什么我在 viewModel 中的函数在文档就绪时被调用?

来自分类Dev

在“setInterval”结束时调用 Javascript 函数

Related 相关文章

  1. 1

    ng-repeat完成时调用JavaScript函数

  2. 2

    在动态创建的html中调用javascript函数

  3. 3

    在元素加载时调用JavaScript函数

  4. 4

    如何在JavaScript中的方法中的addEventListener和全局函数中的removeEventListener时调用removeEventLisener

  5. 5

    在Swift中完成动画时调用函数

  6. 6

    JavaScript函数评估自身并同时调用自身

  7. 7

    在Odoo v8中,如何在给定表中创建记录时调用一个函数?

  8. 8

    Javascript:函数是在页面加载时调用的,而不是onclick / onsubmit

  9. 9

    javascript:同时调用同一函数?

  10. 10

    如何在初始页面加载时调用JavaScript函数

  11. 11

    创建实例失败时调用的析构函数?

  12. 12

    未选择特定广播时调用javascript函数

  13. 13

    如何创建调用某个函数时调用该函数的函数?

  14. 14

    同时调用支持Bean和Javascript函数

  15. 15

    绑定时调用并循环JavaScript函数

  16. 16

    下拉菜单更改时调用Javascript函数

  17. 17

    如何在菜单项选择时调用Javascript函数?

  18. 18

    值更改时调用函数javascript

  19. 19

    表更改内容时调用Javascript函数

  20. 20

    表更改内容时调用Javascript函数

  21. 21

    在Swift中完成动画时调用函数

  22. 22

    向下滚动特定div时调用JavaScript函数?

  23. 23

    单击按钮时调用Javascript函数

  24. 24

    在JavaScript中同时调用函数和修改变量

  25. 25

    在主脚本中创建JavaScript类函数调用函数

  26. 26

    jQuery中的if语句失败时调用函数

  27. 27

    在函数加载时调用函数

  28. 28

    为什么我在 viewModel 中的函数在文档就绪时被调用?

  29. 29

    在“setInterval”结束时调用 Javascript 函数

热门标签

归档