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 */
});