He estado tratando de usar node.js para recorrer una matriz de ciudades y hacer una solicitud iterativa a google para obtener instrucciones sobre cada una (entonces JSON.parse para resumir los tiempos de unidad). Necesito encontrar una manera de hacer esto sincrónicamente, de lo contrario solo solicitaré toda la información de Google en cada ciudad a la vez. Encontré un buen patrón para usar en http://tech.richardrodger.com/2011/04/21/node-js-%E2%80%93-how-to-write-a-for-loop-with-callbacks/ pero no puedo hacer que la devolución de llamada funcione. Como puede ver, estoy usando una función 'mostrar' para probar lo mismo. Mi código es el siguiente:Uso de ciclo de patrón recursivo con 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)
El problema que tengo es que sólo la primera ciudad de la matriz es la producción y la devolución de llamada/iteración no procede. ¿Alguna idea de dónde salgo mal, por favor?
he arreglado un poco ahora, disculpas por la dejadez, la primera vez que he publicado una pregunta. –
Su ejemplo tiene algunos errores: el número de parámetros para 'fs.writeFile' es incorrecto, su función' show' toma 1 parámetro pero usted lo llama con 2. – mihai
Su función show() no llama a su devolución de llamada y por lo tanto no recursión en el ejemplo. –