【问题标题】:Return value from function React from an Axios' response来自 Axios 响应的函数 React 的返回值
【发布时间】:2021-08-16 19:17:31
【问题描述】:

我在 React 中有这个函数,它应该导出从 Axios 的 API 调用获得的结果:

import axios from 'axios'

export function youtube(channelId) {

    var config = {
    method: 'get',
    url: `https://www.googleapis.com/youtube/v3/channels?part=statistics&id=${channelId}&key=AIzaxXXXXXXXXXXXXXXXXXXXXXX`,
    headers: { }
    };

    axios(config)
    .then(function (response) {
        console.log(response.data.items[0].statistics.subscriberCount)
        return response.data.items[0].statistics.subscriberCount
    })
    .catch(function (error) {
        return 0
    });
    

} 

问题:它返回未定义。但是 console.log 显示的数据是正确的。

【问题讨论】:

  • 不可能,你做错了什么
  • 主要区别在于在函数中我使用 axios 进行了外部 API 调用: axios(config) .then(function (response) { console.log(response.data) return response.data } ) .catch(function (error) { return 0 }); -------- console.log 这里有效,但返回值无效
  • 您在此处访问承诺,对于异步任务,您需要解决它以返回任何值或使用 async/await 以获得更好的阅读目的
  • 它有效!谢谢@NishargShah

标签: javascript reactjs function


【解决方案1】:

Synchronous 的方式这是不可能的,但以asynchronous 的方式是可能的,根据我们的评论讨论,您正在访问promise,对于asynchronous 任务,您需要@987654326 @它到return任何值或使用async/await以获得更好的阅读目的。

在您的代码中,问题是您在then/catch 中是returning,另一个then/catch 将等待您的输入,直到您没有settled 承诺才会成功。

代码沙盒:https://codesandbox.io/s/divine-cherry-dqu40?file=/src/App.js

【讨论】:

  • 由于内容较少,我的回答被模组删除了,所以请采纳请点击右箭头作为您的最佳答案,谢谢!
猜你喜欢
  • 2020-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-24
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多