30/09/2018, 19:32
Làm sao để lập trình đồng bộ trên nodejs
Em đang có vấn đề sau
Ví dụ:
var request = require('request');
for(var k=1; k<=10; k++){
var url = 'http://www.24h.com.vn/'+k;
request(url, function(err, response, body){
console.log(k);
})
}
Khi chạy thì sẽ in ra 10 số 11. Nhưng em muốn in ra từ 1 đến 10
Em muốn thực hiện xong hàm callback thì mới tiếp tục vòng lặp thì phải làm thế nào ạ?
Mong mọi người giúp đỡ
Em mới học Nodejs nên mọi người thông cảm
Bài liên quan
Muốn đồng bộ thì xài cái này:
npm install sync-request
Vâng, cám ơn anh nhưng em muốn một số hàm khác cũng đồng bộ
Em có tìm trên mạng thấy 1 cách là:
Nhưng em làm thế nó không chạy à? Anh giải thích dùm em cái được k?
code để trong callback thì lúc nào chẳng async.
Wrap vào trong q hoặc async
Ưu điểm của nodejs là bất đồng bộ mà bắt đồng bộ thì phí phạm quá. Bạn có thể dùng promise, async để ép nó đồng bộ theo ý bạn, nhưng không khuyến khích.
Bạn nên suy nghĩ theo hướng bất đồng bộ, để code chạy tuần tự, nodejs sẽ tự biết chờ, ko nên ép nó phải chờ. Đơn giản nhất là callback. Cẩn thận với callback hell