gọi hàm bất đồng bộ trong vòng lập forEach.
-
Mình có một mảng manglink mình muốn lập forEach với từng phần tử của mảng thì mình cho hàm layData() chạy result lần. Nhưng hình như manglink không chạy được từng phẩn tử. Mà được có vài phần tử là dừng.
Newbie nên chưa rành lắm. Mong m.n giúp đỡ.manglink.forEach(function(index){
getPager(index+"1", function(err, result){
if(err==null){
for(let i=1;i<=result; i++){
layData(index+i);
}
}
});
});
-
thay vì sài forEach thì bạn nên sử dụng callback khi xử lý xong !
function callGetPager(index) { index = index || 0; if (index < manglink.length) { getPager(index + "1", function(err, result) { if (err == null) { for (let i = 1; i <= result; i++) { layData(index + i); } return callGetPager(index+1) } }); } }
-
@Bui-Huy Mình có comment ở post kia của bạn rồi.
Thay vì tập trung giải quyết cho xong bài toán hiện tại, bạn nên bỏ thêm một chút thời gian nghiên cứ khả năng xử lý bất đồng bộ của Promise (được build in trong js).
Mình nghĩ là Promise có thể giải quyết tốt vấn đề bạn đang gặp mà không cần callback hay gì cả.
Thử đivi diệu lắm đấy.
Chúc may mắn.
-
@Acenter-Ha Mình có đọc nhưng chưa hiểu lắm. Thử làm cái project thử xem sao. Rồi tìm hiểu tiếp. Chứ nodejs mà ko biết Bất đồng bộ thì thôi thua rồi :((
-
tài liệu non blocking
-
@Hồ-Duy-Quốc-Bảo OK. Cảm ơn bạn. Để mình thử
-
Kiên nhẫn xem xong hết mấy bài này bạn sẽ hiểu ngay thôi.
http://online.khoapham.vn/nodejs/11-xu-ly-bat-dong-bo-trong-javascript-voi-promise-va-async-–-await/98-lap-trinh-nodejs-xu-ly-bat-dong-bo-trong-javascript-voi-promise-va-async-–-await.html
-
Thanks m.n. Mình đã xử lý được