axios 获取 url 响应 - 在 setInterval 中调用函数时没有数据

问题描述 投票:0回答:2

我正在尝试使用 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);
axios
2个回答
0
投票

主要问题是 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);

0
投票

您期望您的数据将在 60 秒内得到解决,但事实并非如此。 在这种情况下,Javascript 将在执行完所有异步操作后赋值。

尝试使用 Promise 来代替。

© www.soinside.com 2019 - 2024. All rights reserved.