如果没有互联网,如何在Fetch API中获取catch方法?

时间:2016-11-19 11:02:50

标签: javascript react-native fetch

我正在使用Fetch API处理请求,我想在禁用互联网时处理错误。但我没有在THEN函数中得到任何响应,并且在CATCH函数中没有错误消息。我该如何处理这个问题。我正在尝试在React Native中做。先谢谢你

1 个答案:

答案 0 :(得分:0)

查看React Native提供的 NetInfo API。在提出请求之前,您应该能够使用isConnected方法检查它是否已连接到互联网。

import {NetInfo} from 'react-native'

NetInfo.isConnected.fetch().then(isConnected => {
  console.log('First, is ' + (isConnected ? 'online' : 'offline'));
  if (isConnected) {
    fetch(...)
  }
});

当WiFi关闭时,我能够复制catch永远不会被调用。如果请求永远不会返回,那么实现这样的解决方案来手动抛出错误可能是一种解决方法。 See this discussion on handling Timeouts with Fetch

let test = () => {
  return new Promise((resolve, reject) => {
    let id = setTimeout(() => reject('Timeout'),3000)
    fetch('https://swapi.co/api/people/1/')
      .then(res => {
        resolve(res)
        clearTimeout(id)
       })
       .catch(err => {
         reject(err)
         clearTimeout(id)
      })
   })
}
test()
  .then(() => console.log('************Success'))
  .catch(() => console.warn('*************Error'))