我对JavaScript比较新,我试图清理我的原型代码,因为它是buncha深层嵌套的回调函数,很难阅读。我想实现这样的事情:在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
。我怎样才能以干净的方式做到这一点?我也很乐意使用jQuery,但Promise和Deffer ed似乎太过分了。或者,也许是有示例链式像这样,我不知道回调更好的办法:
function().finished(function).finished(alert(""));
你是对的,这很有趣。我想它不适用于我的情况,因为可能检查值的副本而不是引用原始变量。也许? – ArmenB
这也是我的猜测。 –