react-native取回状态代码+ json

标签 react-native promise fetch

我在react-native中使用fetch进行API调用。

我需要获取状态码(200,401,404)和响应数据。

这项工作获得响应数据:

return fetch(url)
.then(response => {
  return response.json();
})
.then(res => {
  console.log("reponse :", res); // <-------- res is ok with data
 })    .catch(error => {
  console.error(error);
  return { name: "network error", description: "" };
});

现在我先调整第一个然后获取状态码,但数据不是我所需要的
return fetch(url)
.then(response => {
  const statusCode = response.status;
  const data = response.json();
  return { statusCode, data };
})
.then(res => {
  console.log("reponse :", res); // <-------- i get a "promise"
 }).catch(error => {
  console.error(error);
  return { name: "network error", description: "" };
});

控制台日志:
  {statusCode: 200, data: Promise}

最佳答案

response.json()返回一个promise,您应该等待直到实现它。为此,您可以将Promise.all与两个元素组成的数组一起使用:statusCoderesponse.json()调用:

return fetch(url)
  .then(response => {
    const statusCode = response.status;
    const data = response.json();
    return Promise.all([statusCode, data]);
  })
  .then([res, data] => {
    console.log(res, data);
  })
  .catch(error => {
    console.error(error);
    return { name: "network error", description: "" };
  });

//编辑
您可以创建一个处理响应的函数
function processResponse(response) {
  const statusCode = response.status;
  const data = response.json();
  return Promise.all([statusCode, data]).then(res => ({
    statusCode: res[0],
    data: res[1]
  }));
}

并使用then()
 return fetch(url)
    .then(processResponse)
    .then(res => {
        const { statusCode, data } = res;
        console.log("statusCode",statusCode);
        console.log("data",data);
    }) .catch(error => {
    console.error(error);
    return { name: "network error", description: "" };
  });

关于react-native取回状态代码+ json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46316405/

相关文章:

icons - React Native Flex-Box Align图标和文本

react-native - 如何在 react native 的键盘顶部显示自定义 View

Javascript promise 递归和链接

javascript - TypeError : this. state.postsList.map 不是一个函数

ios7 - iOS 7 NSURLSession 在后台下载多个文件

react-native - React Navigation 将参数传递给嵌套的 stackNavigator

java - 从自定义组件调用 React-native

javascript - 当返回嵌套在 then block 中的 Promise 时,使用 Promise.all 的 map 会返回未定义的数组

javascript - 多次执行 angular.forEach 后的函数

php - while ($stmt->fetch()) 不获取所有行