jQuery函数链接延迟:.done() - 函数立即调用

时间:2017-09-05 09:52:11

标签: javascript jquery deferred jquery-chaining

我试图在多个函数中获取一些数据,并希望将它们链接起来,以便仅在所有数据都正确加载时执行最后一个函数。

问题是.done()部分中的函数会立即被调用,并且不会等到Deferred-Object被解析。我也尝试用.then()链接它们但是这也没有用。

var array1, array2;

function doStuffWithReceivedData() {
    // Working with the data
}

function getArray1() {
    var defArray1 = $.Deferred();

    $.getJSON(url, function(data) {
        if (data.success) {
            array1 = data.payload;
            defArray1.resolve();
        } else {
            // Information displayed that there was an error
        }
    })

    return defArray1;
}

// Function 2 is like the first one
function getArray2() {...};

$(document).read(function() {
    getArray1()
        .done(getArray2()
            .done(doStuffWithReceivedData()));
}

1 个答案:

答案 0 :(得分:1)

.done()的参数必须是函数。你正在调用函数,而不是传递它。取下括号。

$(document).ready(function() {
    getArray1()
        .done(function() {
            getArray2().done(doStuffWithReceivedData));
        }
}