【发布时间】:2016-04-15 17:04:23
【问题描述】:
这个想法是多次运行地理编码(针对数组)。为了循环一个异步函数,我决定使用递归方式。
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?
})
基本上是我如何获得最终值的问题。
【问题讨论】:
-
顶部的那个对象到底是怎么回事。您问题中的代码格式需要改进。
-
请使用标准缩进使您的代码可读。 jsbeautifier.org 或您的 IDE 可以提供帮助。
-
你从来没有在任何地方打电话给
callback?只需在基本情况下使用它。 -
哎呀。对不起..缩进完成..
标签: javascript node.js asynchronous callback