获取api post请求返回对象不能按预期工作

时间:2017-06-28 09:12:06

标签: javascript json fetch

我正在提取API,它运行良好。 但在这种情况下, resp 始终为 null 。 我想知道如何影响此发布请求的结果 resp var

var resp = null

fetch('http://a1a239a6.ngrok.io/api/login', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
    },
    body: "email=" + email + "&password=" + password,
  }).then((response) => response.json())
  .then((responseJson) => resp = responseJson)
  .catch((error) => console.error(error))

if (resp != null) {
  navigate('Welcome', {
    user: resp
  })
  console.log(resp)
}

2 个答案:

答案 0 :(得分:0)

我认为这是因为导航功能的指令是在api回答(异步)之前执行的

你需要在你的声明中移动它:)

答案 1 :(得分:0)

如果要将数据绑定到变量,则应使用提供的回调。

fetch('http://a1a239a6.ngrok.io/api/login', {
    method: 'POST'
}).then(function(response) {
    navigate('Welcome', { user: response})
}).catch(function(err) {
    // Error
});

因此,一旦成功,它将自动运行您的导航功能,您可能希望在此之前验证您检索到的数据。

错误时,您可以立即运行模态或执行您想要的操作。

以前的代码问题是它无论如何都会运行async,所以即使在回调中你将resp设置为检索到的数据,逻辑也会运行并检查null变量。