JS 在多个 .load() 函数完成后继续
JS continue after multiple .load()-functions done
我在使用异步 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
,这意味着你还没有完成,所以你不想在那里解决你的 Deferred。相反:
if(i < array.length) {
loadView();
} else { // ***
d.resolve();
}
另外,您不需要使用 jQuery.when
。只是:
d.then(function() {
/* when all elements are insert, do something */
});
我在使用异步 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
,这意味着你还没有完成,所以你不想在那里解决你的 Deferred。相反:
if(i < array.length) {
loadView();
} else { // ***
d.resolve();
}
另外,您不需要使用 jQuery.when
。只是:
d.then(function() {
/* when all elements are insert, do something */
});