Tôi biết tôi có thể sử dụng biến ngoài để xác định một số trạng thái mà hàm bên ngoài cần thực hiện. Nhưng hãy xem xét điều này: Nếu hàm bên trong là không đồng bộ? Hàm bên ngoài sẽ không đợi cho biến của hàm bên trong sẽ thay đổi, vậy làm thế nào tôi có thể trả về hàm ngoài bây giờ?JavaScript: Cách trả về hàm bên ngoài bên trong hàm bên trong không đồng bộ?
function outer() {
var flag = true;
// For example, a jquery-like ajax call
$.ajax({
// Some settings
error: function(jqXHR, textStatus, errorThrown) {
// Here I want to return outer()
flag = false;
}
});
return flag;
}
Như bạn có thể thấy, nếu tôi sử dụng flag
như giá trị trả về, outer()
sẽ rất có khả năng trở thành sự thật vì cuộc gọi ajax có thể mất một thời gian dài. Và vì lý do tương tự, tôi không muốn đặt async: false
vì điều đó sẽ ngừng phản ứng trang.
Điều đó là không thể với các luồng không đồng bộ, tôi khuyên bạn nên thêm phương thức gọi lại làm tham số cho 'outer (cb)' mà bạn gọi khi yêu cầu ajax hoàn tất. – olsn
Có đúng, tôi đã suy nghĩ sai. – Melkor