JS在多次.load()后继续 - 功能完成
问题描述:
我遇到了一个异步JS函数的问题。那么我有一个函数插入元素一个接一个。这工作。但是我想在所有函数完成后继续。JS在多次.load()后继续 - 功能完成
我实施Deferred()
部分的方式显然是错误的,但我不知道如何实现这一点。
注:为简化起见,我简化了代码。
var d = new jQuery.Deferred();
var i = index;
function loadView() {
if(i > -1 && i < array.length) {
if(!jQuery.contains(document.documentElement, $(selector)[0])) {
/* do stuff here */
panel.load(myPHPfile, function() {
$dom.append($(selector));
i++;
if(i < array.length) {
loadView();
d.resolve();
}
});
}
}
}
loadView();
jQuery.when(d).then(function() {
/* when all elements are insert, do something */
});
我很感谢任何帮助!
答
如果i < array.length
增加后,这意味着你没有完成,所以你不想解决你的延期那里。相反:
if(i < array.length) {
loadView();
} else { // ***
d.resolve();
}
另外,您不需要使用jQuery.when
。只需:
d.then(function() {
/* when all elements are insert, do something */
});