首页 > 解决方案 > 如何从javascript中的获取中返回响应

问题描述

我无法在我的 React Native 项目中返回 API 调用的响应。

let response = fetch('http://3.133.123.120:8000/auth/token', {
    method: "POST",
    headers: {
        Accept: 'application/json',
        'Content-Type': 'application/json',
    },
    body: JSON.stringify({
        client_id: 'NTMtzF7gzZPU9Ka35UFsDHvpR8e4D1Fy4OPRsurx',
        grant_type: 'password', 
        username: user, 
        password: pass, 
    })
})
.then((response) => response.json())
.then((response) => this.setState({jsonData: response}))
.then(() => alert('resposne jsonData: ' + JSON.stringify(this.state)));
alert('resposne jsonData: ' + JSON.stringify(response))

上面的代码在底部的 .then() 语句中返回了正确的响应,但是,我无法使用 fetch() 语句之外的数据。

我尝试在 fetch() 之外使用的任何东西(比如我在底线的警报)都给了我以下...

{"_40":0,"_65":0,_55":null,"_72":null}

另请注意,这都在 React 类组件中

标签: javascriptrequestfetch

解决方案


fetch返回Promisehttps ://developer.mozilla.org/en-US/docs/Web/API/Fetch_API

那时您已经可以访问该 final 中的值。如果您正在寻找一种在不使用回调的情况下使用以下值的方法,您可以考虑async/await样式并将此代码包装在一个函数中,如下所示:

const fetchData = async () => {
  const results = await fetch() // put your fetch here
  alert(results.json());
};

获取信息https ://developer.mozilla.org/en-US/docs/Web/API/Fetch_API

异步/等待信息https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/await


推荐阅读