У меня возникла проблема с операцией async. Мне нужно знать, когда будет создан мой стол. Но таблица создается из информации из базы данных, полученной с помощью 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();
}
Нужно ли использовать обратные вызовы? Можете ли вы использовать [Обещания] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) или [асинхронные функции] (https://developer.mozilla.org/EN-US/Docs/Web/JavaScript/Справка/Заявления/async_function)? – wing
Вот почему мы придумали Обещания. Добавьте второй обратный вызов к ajax-вызову первого: 'success: function (response) {callback (response, otherCallback);}' и 'getRepairBook (function (response), otherCallback)' Вы можете вложить столько, сколько хотите, но в конечном итоге с pryamid гибели. ;) – Shilly