Javascript 如何在回调外部使用变量

Javascript 如何在回调外部使用变量,javascript,node.js,Javascript,Node.js,我对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) r

我对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);
var旅行时间;
对于(变量i=0;i
最后一行给出了
未定义的
。我在搜索时发现,由于Node.js是异步的,所以我的变量
映射_data
只存在于距离.get()回调中,但我需要这些数据来继续我的工作。我怎样才能让它在我所有的代码中生存?谢谢

如何在回调之外使用变量

你不能这样做。
变量在该回调内部定义,并且仅在该回调内部定义。
这就是它记录未定义的
的原因

您可以通过将
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
    });
}
var旅行时间;
对于(变量i=0;i