2016-10-03 35 views
-1

我在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

如何在回调之外使用变量?

你不行。
该变量仅在该回调和该回调中定义。
这就是为什么它正在登录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 
}