アイデアは、ジオコードを複数の時間(配列に対して)実行することです。非同期関数をループするために、私は再帰方法を使うことにしました。非同期ループの再帰を使用する:プッシュアレイデータへのアクセス方法?
var geocoder = require('geocoder')
var geocoded = []
//Example array
var result = [{
'company_no': 'A',
'address': 'a'
}, {
'company_no ': 'B',
'address': 'b'
}]
function geocodeOneAsync(result, callback) {
var n = result.length
function tryNextGeocode(i) {
if(i >= n) {
//onfailure("alldownloadfailed")
return
}
var address = result[i].address
geocoder.geocode(address, function (err, data) {
geocoded.push(result[i].company_no)
console.log('data1' + JSON.stringify(
geocoded)) //Result is ==> data1["A"], data1["B"]
tryNextGeocode(i + 1)
// }
})
}
console.log('data1' + JSON.stringify(geocoded))
tryNextGeocode(0)
}
geocodeOneAsync(result, function() {
JSON.stringify('data final ' + geocoded) // result is empty []. I want to access the final geocoded array?
})
基本的にどのように私は最終的な価値を得ることができますか?
トップでそのオブジェクトと一体何が起こっているのですか?あなたの質問のコードの書式を改善する必要があります。 –
標準のインデントを使用してコードを読み取り可能にしてください。 http://jsbeautifier.org/またはIDEが役立ちます。 – Bergi
どこでも 'callback'を呼び出すことはありませんか?ベースケースでそのまま使用してください。 – Bergi