jQuery 延迟函数链接:.done() - 立即调用的函数
jQuery function chaining with deferred: .done()-Function instantly called
我正在尝试在多个函数中获取一些数据,并希望将它们链接起来,以便仅在所有数据都正确加载后才执行最后一个函数。
问题是 .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()));
}
.done()
的参数必须是一个函数。您正在调用该函数,而不是传递它。去掉括号。
$(document).ready(function() {
getArray1()
.done(function() {
getArray2().done(doStuffWithReceivedData));
}
}
我正在尝试在多个函数中获取一些数据,并希望将它们链接起来,以便仅在所有数据都正确加载后才执行最后一个函数。
问题是 .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()));
}
.done()
的参数必须是一个函数。您正在调用该函数,而不是传递它。去掉括号。
$(document).ready(function() {
getArray1()
.done(function() {
getArray2().done(doStuffWithReceivedData));
}
}