ive node.jsを使用して都市の配列を反復し、それぞれの方向についてgoogleに反復的にリクエストしています(次にドライブ時間を抽象化するJSON.parse)。私はこれを同期的に行う方法を見つけ出す必要があります。そうでなければ、私はただちに各都市のgoogleからすべての情報を要求します。私はhttp://tech.richardrodger.com/2011/04/21/node-js-%E2%80%93-how-to-write-a-for-loop-with-callbacks/で使用するのに良いパターンを見つけましたが、コールバックを動作させることはできません。あなたが見ることができるように、私は同じものをテストするために 'ショー'機能を使用しています。私のコードは次の通りです: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)
問題は、配列の最初の都市だけが出力され、コールバック/反復が進まないことです。どのようなアイデアがうまくいかないのですか?
プログラム、だらしのための謝罪、私は質問を投稿した最初の時間でこれを含めます。 –
あなたの例にはいくつかの間違いがあります: 'fs.writeFile'のパラメータの数が間違っています。関数' show'は1つのパラメータをとりますが、2で呼び出します。 – mihai
show()関数はコールバックこの例では再帰はありません。 –