Tôi đã kế thừa mã JavaScript nơi lời gọi thành công của trình xử lý Ajax khởi tạo một cuộc gọi Ajax khác, nơi cuộc gọi lại thành công có thể hoặc không thể khởi tạo một cuộc gọi Ajax khác. Điều này dẫn đến các chức năng ẩn danh lồng nhau sâu sắc. Có thể có một mô hình lập trình thông minh giúp tránh làm tổ sâu và nhiều DRY hơn. Ngoài ra, có sự cố của các biến bên trong myVar1 và myVar2 được sử dụng trong suốt các hàm.Mô hình lập trình để làm phẳng các callback ajax lồng nhau sâu sắc?
jQuery.extend(Application.Model.prototype, {
process: function() {
var myVar1;
// processing using myVar1;
jQuery.ajax({
url:myurl1,
dataType:'json',
success:function(data) {
var myVar2;
// process data using myVar1, set state of myVar2,
// then send it back
jQuery.ajax({
url:myurl2,
dataType:'json',
success:function(data) {
// do stuff with myVar1 and myVar2
if(!data.ok) {
jQuery.ajax({
url:myurl2,
dataType:'json',
success:mycallback
});
}
else {
mycallback(data);
}
}
});
}
});
}
});
Hơi liên quan. Chơi AJAX "ping-pong" với máy chủ là một cách chắc chắn để tạo thêm thời gian chờ đợi. Bạn có thể muốn xem xét nếu nó có thể thực hiện công việc chỉ trong một yêu cầu, ngay cả khi điều đó có nghĩa là truyền tải nhiều dữ liệu hơn. – aaaaaaaaaaaa