【发布时间】:2011-08-16 19:00:47
【问题描述】:
我目前无法使用几个必须以非常特定的顺序加载的 JavaScript 库。由于 jQuery 的 getScript() 是异步的,它开始非常快速地下载所有脚本,并在它们完成后执行它们。由于它们没有按顺序执行,因此我收到了来自库的多个错误。
很遗憾,我无法更改或修改这些库中的任何一个。我正在尝试做的是使用一种下载 JavaScript 库的方法,并在回调中让它自己调用,直到它完成所有库的加载。
这适用于第一个文件。当第二个文件出现时,它会在回调中丢失上下文,我不能再调用我的递归方法了。
有什么想法吗?
代码的配对版本:
function loadFiles (CompletedCallback) {
var Files = getFiles(); // This is an array of js files to load
var currentFileIndex = 0;
function processFile (file) {
$.getScript(file[currentFileIndex], $.proxy(function () {
++currentFileIndex;
if (currentFileIndex === Files.length) {
CompletedCallback();
} else {
processFile(Files[currentFileIndex]);
}
}, this);
};
processFile(Files[currentFileIndex]);
};
【问题讨论】:
-
你为什么使用
$.proxy?你不是在匿名函数中引用this -
这是我设置正确上下文的尝试,但它似乎没有改变任何东西。
标签: javascript jquery getscript