我正在尝试使用 setInterval ,它应该每 60 秒执行一次获取。 axios 响应数据具有有效值,但如果我尝试将其分配给变量,则它不起作用。
我错过了什么吗?
async function fetch_data() {
axios
.get("https://url.tld/data")
.then((res) => {
console.log(res.data); // shows data
return res.data;
})
.catch((error) => {
callback({ success: false, error: "could not fetch data" });
});
}
setInterval(async () => {
let data = null;
try {
data = await fetch_metadata();
console.log("Fetched data:", data); // is null
} catch (error) {
console.error("Error fetching data:", error);
}
}, 60000);
主要问题是 fetch_data 函数未正确返回获取的数据。
const axios = require('axios'); // Ensure axios is imported
async function fetch_data() {
try {
const res = await axios.get("https://url.tld/data");
console.log(res.data);
return res.data;
} catch (error) {
console.error("Error fetching data:", error);
return null;
}
}
setInterval(async () => {
try { const data = await fetch_data();
console.log("Fetched data:", data);
} catch (error) {
console.error("Error fetching data:", error);
}}, 60000);
您期望您的数据将在 60 秒内得到解决,但事实并非如此。 在这种情况下,Javascript 将在执行完所有异步操作后赋值。
尝试使用 Promise 来代替。