如何在回调之外使用变量

时间:2016-10-03 01:02:48

标签: 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) return console.log(err);
        travelTimes.push(data.ubication);
    });
}
console.log(travelTimes);

最后一行给了我undefined。我正在搜索并发现因为Node.js是异步的,我的变量maps_data只存在于distance.get()回调中,但我需要这些数据继续我的工作。如何在我的所有代码中实现它?谢谢!

1 个答案:

答案 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
}