Ich habe versucht, node.js zu verwenden, um durch ein Array von Städten zu iterieren und eine iterative Anfrage nach google für Richtungen auf jedem zu machen (ich dann JSON.parse, um die Laufwerkzeiten zu abstrahieren). Ich muss einen Weg finden, dies synchron zu tun, sonst werde ich nur alle Informationen von Google auf jeder Stadt auf einmal anfordern. Ich habe ein gutes Muster gefunden, um es unter http://tech.richardrodger.com/2011/04/21/node-js-%E2%80%93-how-to-write-a-for-loop-with-callbacks/ zu verwenden, kann aber den Callback nicht zum Laufen bringen. Wie Sie sehen können, verwenden Sie eine "Show" -Funktion, um dasselbe zu testen. Mein Code ist wie folgt:Verwenden rekursiver Musterschleife mit 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)
Das Problem, das ich habe ist, dass nur die erste Stadt aus dem Array ausgegeben und die Rückruf/Iteration nie abläuft. Irgendwelche Ideen, wo ich bitte falsch liege?
ich es ein bisschen jetzt in Ordnung gebracht haben, Entschuldigungen für die Schlamperei, erste Mal, dass ich eine Frage gestellt habe. –
Ihr Beispiel hat einige Fehler: die Anzahl der Parameter zu 'fs.writeFile' ist falsch, Ihre Funktion' show' nimmt 1 Parameter, aber Sie rufen sie mit 2. – mihai
Ihre Funktion show() ruft nicht ihren Callback auf und daher keine Rekursion im Beispiel. –