我有一個異步操作的問題。我需要知道我的表何時生成。但是該表是從通過ajax獲取的數據庫信息生成的。在回調中進行回調
這將是我的起點,在那裏我需要知道數據被取出並生成表:
generateTable(function(r){
});
在這裏我從數據庫獲取信息,並將其發送給回調函數
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();
}
您是否必須使用回調?你能夠使用[Promises](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)或[異步函數](https://developer.mozilla.org/EN-US /文檔/網絡/的JavaScript /參考/語句/ async_function)? – wing
這就是爲什麼我們發明了Promises。將第二個回調函數添加到第一個函數ajax調用中:'success:function(response){callback(response,otherCallback);}'和'getRepairBook(function(response),otherCallback)'您可以儘可能深的嵌套,最終與毀滅之謎。 ;) – Shilly