ive đang cố gắng sử dụng node.js để lặp qua một mảng thành phố và thực hiện yêu cầu lặp lại cho google để tìm chỉ đường trên mỗi (sau đó là JSON.parse để trừu tượng số lần truyền). Tôi cần phải tìm một cách để làm điều này đồng bộ như nếu không tôi sẽ chỉ yêu cầu tất cả các thông tin từ google trên mỗi thành phố cùng một lúc. Tôi đã tìm thấy một mô hình tốt để sử dụng tại http://tech.richardrodger.com/2011/04/21/node-js-%E2%80%93-how-to-write-a-for-loop-with-callbacks/ nhưng không thể gọi lại để hoạt động. Như bạn có thể thấy, tôi sử dụng hàm 'show' để kiểm tra tương tự. Mã của tôi như sau:Sử dụng vòng lặp mẫu đệ quy với node.js
var request = require('request');
var fs = require('fs');
var arr = ['glasgow','preston','blackpool','chorley','newcastle','bolton','paris','york','doncaster'];
//the function I want to call on each city from [arr]
function getTravelTime(a, b,callback){
request('https://maps.googleapis.com/maps/api/directions/json?origin='+a+'&destination='+b+'®ion=en&sensor=false',function(err,res,data){
var foo = JSON.parse(data);
var duration = foo.routes[0].legs[0].duration.text;
console.log(duration);
});
};
function show(b){
fs.writeFile('testing.txt',b);
};
function uploader(i){
if(i < arr.length){
show(arr[i],function(){
uploader(i+1);
});
}
}
uploader(0)
Vấn đề tôi có là thành phố đầu tiên của mảng là đầu ra và gọi lại/lặp lại không bao giờ tiếp tục. Bất kỳ ý tưởng mà im đi sai xin vui lòng?
Tôi đã dọn dẹp một chút ngay bây giờ, xin lỗi vì sự cẩu thả, lần đầu tiên tôi đã đăng câu hỏi. –
Ví dụ của bạn có một số sai lầm: số parametrs để 'fs.writeFile' là không chính xác, hàm của bạn' show' nhận 1 tham số nhưng bạn gọi nó với 2. – mihai
Hàm show show() không gọi nó là gọi lại và do đó không đệ quy trong ví dụ. –