我有一个异步操作的问题。我需要知道我的表是何时生成的。但是该表是由通过ajax从数据库获取的信息生成的。
这将是我的起点,我需要知道数据已被获取并生成表:
generateTable(function(r){
});在这里,我从DB获取信息并将它们发送到回调函数
function getRepairBook(callback) {
$.ajax({
method: "GET",
dataType: "json",
contentType: "application/json",
url: "x",
success: function(response){
callback(response);
},
error: function(response){
}
});
}这里我需要回调函数的回调函数。但我不知道该怎么做:
function generateTable(callback) {
//callback of AJAX
getRepairBook(function (response) { //, callback
console.log(response);
$('#repTable >tbody').html("");
var trHTML = '';
$.each(response, function (i, item) {
//...
//build table
});
$('#repTable >tbody').append(trHTML);
//need a callback of this callback function
//callback();
});
callback();
}发布于 2017-02-20 23:49:19
您可以链接JQuery deferred对象。它们是这样工作的:
function foo() {
// initialize the deferred
var dfd = $.Deferred();
// resolve the deferred after 2 sec
setTimeout(function() {
dfd.resolve();
}, 2000);
// return the promise
return dfd.promise();
}
function bar() {
var dfd = $.Deferred();
// resolve the deferred after 1 sec
setTimeout(function() {
dfd.resolve();
}, 1000);
return dfd.promise();
}
$(function() {
var dfd = foo();
// when foo has been resolved
dfd.then(function() {
alert('foo has been resolved');
var dfd2 = bar();
// when bar has been resolved
dfd2.then(function() {
alert('bar has been resolved');
});
});
});<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
$.ajax调用返回一个promise,因此您可以将此promise的解析与您想要执行的下一个操作/函数链接起来。
https://stackoverflow.com/questions/42348546
复制相似问题