gpt4 book ai didi

javascript - 使用 Node.js 函数中的数据

转载 作者:行者123 更新时间:2023-12-03 09:45:22 25 4
gpt4 key购买 nike

我正在学习使用 NodeJS,但遇到了问题。 getCurrentWeather() 是异步函数,当我启动应用程序时,它会立即加载,并将数据写入变量。当我在函数外部使用这些变量来处理 console.log() 数据时,我得到未定义的结果,因为 Node 不会等到 getCurrentWeather() 获取 API 数据,它只是立即执行代码,而它仍然没有任何返回值。我用另一个函数 renewCurrentWeather() 解决了这个问题,并添加了 setTimeout 来等待 getCurrentWeather() 获取数据,然后才控制台。 log() 它。

这种方法对我有用,但问题是如果我想多次使用这些数据,我必须使用带有setTimeout的函数。在我看来,这有点问题,因为我需要在更复杂的情况下使用这些数据。

所以我的问题是,当 getCurrentWeather() 完全完成从 API 加载数据时,如何让 Node.JS 执行 console.log(temp, cond) 。换句话说,我只想在应用程序中的任何地方使用变量 tempcond,而不附加任何函数。

// Get weather data from Weather Underground every 3 minutes (due to daily 500 calls per day limit)

function getCurrentWeather() {
wunder.conditions('', function (err, data) {
if (err) throw err;
temp = data.temp_c;
cond = data.weather;
});
};

getCurrentWeather();
setInterval(getCurrentWeather, 180000);

// Use data recieved from API as much times as I need
function renewCurrentWeather() {
setTimeout(function() {
console.log(temp + " " + cond);
}, 1000);
};

最佳答案

您可以通过将 console.log 放入回调函数中来使用这些值。回调函数按顺序工作,因此 console.log 将在值更新后执行。

function getCurrentWeather() {
wunder.conditions('', function (err, data) {
if (err) throw err;
temp = data.temp_c;
cond = data.weather;
});
console.log(temp + " " + cond);
};

setInterval(getCurrentWeather, 180000);

关于javascript - 使用 Node.js 函数中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31049312/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com