【问题标题】:JS continue after multiple .load()-functions done多个 .load() 函数完成后 JS 继续
【发布时间】:2017-04-12 10:20:33
【问题描述】:

我遇到了异步 JS 函数的问题。好吧,我有一个函数可以一个一个地插入元素。这行得通。但我想在所有.load()-functions 完成后继续。

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

感谢您的帮助!

【问题讨论】:

    标签: javascript ajax asynchronous load jquery-deferred


    【解决方案1】:

    如果i &lt; array.length 在增加之后,这意味着你还没有完成,所以你不想在那里解决你的 Deferred。而是:

    if(i < array.length) {
        loadView();
    } else {                   // ***
        d.resolve();
    }
    

    另外,您不需要使用jQuery.when。只是:

    d.then(function() {
        /* when all elements are insert, do something */
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-17
      • 2022-09-30
      • 1970-01-01
      相关资源
      最近更新 更多