我对Node.js中变量的持久性存在问题。
我做了这个例程:
var travelTimes;
for(var i = 0; i < data.length; i++){
distance.get(
{
origin: hotel,
destination: data[i].ubicacion,
language: 'es'
},function(err, maps_data) {
if (err) return console.log(err);
travelTimes.push(data.ubication);
});
}
console.log(travelTimes);
最后一行给了我undefined
。我正在搜索并发现因为Node.js是异步的,我的变量maps_data
只存在于distance.get()回调中,但我需要这些数据继续我的工作。如何在我的所有代码中实现它?谢谢!
答案 0 :(得分:0)
如何在回调之外使用变量?
你不能。
变量在该回调内部定义,仅在该回调中定义
这就是它记录undefined
。
您可以通过将console.log()
置于函数内部来解决此问题。
var travelTimes;
for(var i = 0; i < data.length; i++){
distance.get(
{
origin: hotel,
destination: data[i].ubicacion,
language: 'es'
},function(err, maps_data) {
if (err) return console.log(err);
travelTimes.push(data.ubication);
});
console.log(travelTimes); // Now it's inside the callback
}