当前位置: 首页 > 知识库问答 >
问题:

从Axios API返回数据

通京
2023-03-14

我正在尝试使用Node.JS应用程序发出和接收API请求。它使用Axios向另一台服务器发出get请求,并从它接收的API调用中接收数据。第二个代码段是脚本从调用返回数据的时间。它实际上会将其写入控制台,但不会在第二个API中将其发送回。

function axiosTest() {
    axios.get(url)
        .then(function (response) {
            console.log(response.data);
            // I need this data here ^^
            return response.data;
        })
        .catch(function (error) {
            console.log(error);
        });
}

...

axiosTestResult = axiosTest(); 
response.json({message: "Request received!", data: axiosTestResult});

我知道这是错误的,我只是想找到一种方法让它发挥作用。我能从中获取数据的唯一方法似乎是通过console.log,这对我的情况没有帮助。

共有3个答案

慕阳平
2023-03-14

你可以用一个简单的回调函数来填充你想要的数据,比如我们有一个名为lst的列表,我们想要填充它,我们有一个函数来填充列表,

const lst = [];  
const populateData = (data) => {lst.push(data)} 

现在我们可以将回调函数传递给正在进行axios调用的函数,当我们从响应中获取数据时,我们可以对列表进行处理。

现在,我们使我们的函数,使请求和传递人口数据作为回调函数。

function axiosTest (populateData) {
        axios.get(url)
       .then(function(response){
               populateData(response.data);
        })
        .catch(function(error){
               console.log(error);
         });
}   
乐正玺
2023-03-14

我知道这个帖子很旧。但是我已经看到一些人尝试使用async和Wait来回答问题,但都弄错了。这将为任何新的参考资料清理它

async function axiosTest() {
      try {
        const {data:response} = await axios.get(url) //use data destructuring to get data from the promise object
        return response
      }

      catch (error) {
        console.log(error);
      }
    }
武骁
2023-03-14

问题是原始的axiosTest()函数没有返回promise。为了清晰起见,这里有一个扩展的解释:

function axiosTest() {
    // create a promise for the axios request
    const promise = axios.get(url)

    // using .then, create a new promise which extracts the data
    const dataPromise = promise.then((response) => response.data)

    // return it
    return dataPromise
}

// now we can use that data from the outside!
axiosTest()
    .then(data => {
        response.json({ message: 'Request received!', data })
    })
    .catch(err => console.log(err))

函数可以写得更简洁:

function axiosTest() {
    return axios.get(url).then(response => response.data)
}

或使用异步/等待:

async function axiosTest() {
    const response = await axios.get(url)
    return response.data
}
  • 使用promise指南
  • 异步函数信息
 类似资料:
  • 问题内容: 如何从AsyncTask中获取数据?我的MainActivity正在调用触发AsyncTask的DataCall.getJSON函数,但是我不确定如何将数据返回到原始Activity。 调用DataCall的MainActivity应该返回一个字符串并将其保存在 数据通话: 问题答案: 对我来说,关键是创建一个名为URLWithParams的类或其他类,因为AsyncTask将只允许发

  • 问题内容: 我正在尝试使用Node.JS应用程序来发出和接收API请求。它使用Axios对其接收的API调用接收的数据向另一个服务器发出get请求。第二个片段是脚本从调用中返回数据的时间。它实际上会接收并写入控制台,但不会在第二个API中将其发送回去。 … 我知道这是错误的,我只是想找到一种使它起作用的方法。我似乎只能从中获取数据的唯一方法是通过console.log,这对我的情况没有帮助。 问题

  • 问题内容: 我需要兑现承诺,以便可以通过封闭函数将其返回。我知道,由于正常的JavaScript范围,我可能无法按照编码的方式进行操作。有什么办法可以做到吗? 位于#1 的 console.log 会生成正确的数据。 console.log #2总是产生’a’; 任何指针将不胜感激。 问题答案: 许诺背后的基本原则之一是它是异步处理的。这意味着您无法创建承诺,然后立即在代码中同步使用其结果(例如,

  • C++ 数组 C++ 不允许返回一个完整的数组作为函数的参数。但是,您可以通过指定不带索引的数组名来返回一个指向数组的指针。 如果您想要从函数返回一个一维数组,您必须声明一个返回指针的函数,如下:int * myFunction() { . . . } 另外,C++ 不支持在函数外返回局部变量的地址,除非定义局部变量为 static 变量。 现在,让我们来看下面的函数,它会生成 10 个随机数,并

  • 现在我们已经学习了带返回值的函数,我来告诉你一个秘密:main函数并非真的应该是一个void函数。main应该返回一个整数: int main () { return 0; } 通常,main的返回值为0,它表明程序成功执行。出错时一般返回-1,或其他的用以指明发生了哪种错误的值。 当然,你可能想知道这个值返回给谁了,因为我们自己从来没有调用过main。其实是这样,当系统执行程序时,它通过调

  • 我正在等待(从USSD请求中)检索一个值,以便返回它(getUSSD):