javascript - React-native 异步获取返回 null

标签 javascript reactjs react-native fetch

我正在尝试将提取函数放入一个单独的文件中,这样我就可以轻松地组织这些 API 提取。但是,当我尝试获取并返回数据时,它给了我 null 或一个意外的 json 对象。这是我的 src 的一部分:

//api.js
export async function LoginAPI(username, password) {
   const url = baseURL + "/login/";
   var params = {username: username, password: md5.hex_md5(password)};

   let response = await fetch(url, {
      method: 'POST',
      headers: {'Accept': 'application/json','Content-Type': 'application/x-www-form-urlencoded'},
      body: JSON.stringify(params)
   });
   return await fetch(url, {
      method: 'POST',
      headers: header,
      body: JSON.stringify(params)
   })
   .then((res) => res.text())
   .then((text) => text.length ? JSON.parse(text) : {})
    .catch((error) => {
        throw error;
    });
};

这是另一个文件。

//index.js
var Login = React.createClass({
  onPress_login: function() {
  var value = this.refs.form.getValue();
  if (value) {
     result = LoginAPI(value.username, value.password);
     console.log(result);
  } else {
     this.AlertDialog.openDialog();
  }
},
render() {
   return (
 (...)
 <Button onPress={this.onPress_login}>
     <Text>Login</Text>
 </Button>

提取正在工作,它正在与服务器通信。但是,控制台日志首先返回给我

 Promise  _45: 0_54: null  _65: null  _81: 1  __proto__: Object

我假设首先在控制台中登录的 result 不是等待结果(来自服务器的实际响应,而是获取响应的对象)。我试图在线搜索方法,但找不到任何帖子/博客/文章说明如何将获取作为函数调用。

请问有什么方法可以像 swift 一样,LoginAPI(username, password, callback: {...})

最佳答案

问题是你正在创建一个异步函数而不是等待响应,你会看到那种控制台日志。

试试这个:

result = await LoginAPI(value.username, value.password);

如果这是您的问题,请告诉我。

关于javascript - React-native 异步获取返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42286501/

相关文章:

ios - 未处理的 js 异常 : application main has not been registered expo TestFlight

javascript - 如何通过在 React Native 中点击屏幕来关闭模态

javascript - "Un-require"一个函数

javascript - JSLint 批准的创建长字符串的方法是什么?

javascript - 似乎无法在我一直在研究的 vue.js 组合中获得正确的路由

reactjs - 自定义钩子(Hook)重置为其初始状态

reactjs - 尝试安装 react-router-dom 时出现 npm 脚本错误

javascript - 时差1小时

javascript - react .js : modify render() method for all components?

reactjs - react native SectionList 与列