我创建了一个类,该类在初始化后开始下载JSON文件。
但是,下载异步运行。
因此,在声明它之后,我开始使用它,但是由于它尚未加载文件而失败。
我可以关闭异步功能,但是还有另一种方法可以不冻结浏览器吗?
我目前正在使用setTimeout选项来解决它,但这似乎是一个丑陋的hack。
var d;
$(document).ready(function() {
d = new Duk('element');
d.getBlueprint('hud.json');
setTimeout(start, '2000');
});
function start(){
test = new d.Dialog(d.blueprint.screens.test);
test.draw();
}
最佳答案
您必须将事件处理程序附加到对象加载完成事件。您正在使用的库必须提供此事件。我不知道Duk
是什么或getBlueprint()
做什么,但是您应该检查文档中的类和方法是什么,并查看是否存在oncomplete回调。如果存在,您将执行以下操作:
$(document).ready(function() {
d = new Duk('element');
d.getBlueprint('hud.json', {
onComplete: function() {
test = new d.Dialog(d.blueprint.screens.test);
test.draw();
}
});
});
显然,我只是弥补了这一点。我不知道您的库是否具有这样定义的onComplete方法,但希望您明白我的意思。在不了解您正在使用的库的更多信息的情况下,我无法给出更好的示例。
关于javascript - 如何在Javascript中“排队”一段代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4729042/