除了 jQuery 的 AJAX 函数之外,我对“异步” JavaScript 的理解非常有限。
我创建了一个系统,我将外部 Javascript 文件作为“模块”加载,以保持整洁和轻量级。可以在此处找到执行此操作的主要灵感 + 实现。
因此,例如,一个名为的 JS 文件foo.js
可能包含以下具有设置属性的 JS 对象:
var bar = {
a:1,
b:2
}
加载此外部文件后,可通过window.bar
其后访问。因此,在浏览器的 Developer Tool JS 控制台中输入window.bar.a
(或者bar.a
)应该返回:
1
当我尝试将bar
对象分配给变量时出现我的问题,这通常会在加载外部 JS 模块之前同步解决,并且通常包含undefined
- 嘘!
到目前为止,这是我的尝试:如果对象实例已经存在,则基本上返回它window
,否则等待它被加载然后返回它(理想情况下):
var val = getInstance('bar');
这调用了我的函数:
function getInstance(name) {
if(typeof window[name] === 'object'){
return window[name];
} else {
$(window).on('load', window[name], function() {
return window[name];
});
}
}
当然,undefined
当我返回时console.log(val)
。
我在这里知道一个事实,即我期望对象bar
异步通过val
. 然后我可以继续并开始通过(即)引用bar
实例。val
val.a == 1
我已经努力浏览 jQuery 的 Deferred Object ( $.Deferred
) - 我的理解消失了,但我的截止日期很紧,如果我是对的,我想现在而不是几天后知道跟踪bar
into的获取和实例val
。
非常感谢任何帮助、指点或评论!