Truyền kết quả bất đồng bộ vào callback trong JavaScript
Bây giờ, giả sử sau khi hoàn thành, thao tác bất đồng bộ không xuất ra gì ra console, mà nhận được một kết quả nào đó. Giả sử đó là một mảng dữ liệu, chẳng hạn như có thể được lấy qua AJAX. Nhưng vì chúng ta chưa biết cách làm việc với AJAX, nên chỉ giả lập việc lấy dữ liệu đó:
function make() {
setTimeout(function() {
let res = [1, 2, 3, 4, 5]; // mảng chứa kết quả
}, 3000);
}
Hãy làm sao để mảng kết quả được truyền vào tham số của callback:
function make(callback) {
setTimeout(function() {
let res = [1, 2, 3, 4, 5];
callback(res); // truyền kết quả vào làm tham số
}, 3000);
}
Bây giờ, khi truyền callback vào lời gọi hàm make, chúng ta có thể viết một tham số trong nó - và tham số này sẽ nhận được kết quả của thao tác bất đồng bộ:
make(function(res) {
console.log(res); // mảng của chúng ta
});
Hãy bổ sung mã của callback để nó tìm tổng các phần tử của mảng kết quả.