【发布时间】:2020-06-19 17:06:42
【问题描述】:
如果请求由于互联网连接速度太慢而需要很长时间才能解决,Firebase 会发出错误消息。这是错误:
@firebase/firestore:Firestore (7.9.2):无法访问 Cloud Firestore 后端。连接失败 1 次。最近的错误:FirebaseError:[code=unavailable]:操作无法完成 这通常表明您的设备目前没有健康的互联网连接。客户端将在离线模式下运行,直到能够成功连接到后端。
在尝试捕获此错误时,我遇到了 redux-thunks 的奇怪行为。我的 api 函数能够在其 catch() 块中捕获 firebase 错误,但在 thunk 操作中未在 catch() 块中捕获。这里有一些伪代码可以更好地说明这一点:
api.js
getDoc () {
return firebase.firestore().doc().get().then(result => {
return result
}).catch(error => {
//error caught here
console.log(error)
})
}
thunks.js
action () {
api.getDoc().then(result => {
//result contains the error
dispatch(success(result));
})
.catch(error => {
//not being reached
dispatch(failed(error))
})
}
我创建了一个code sandbox 来重现错误。随意玩弄代码。当您在应用程序获取数据时离线时,将引发 firebase 错误,并且控制台将显示后端 api 捕获了错误但 thunk 操作未能这样做。 我不确定这是我的错误还是 redux-thunk 库或 firebase 库的限制。
问题:如何处理此错误,以便我的 thunk 操作不会将错误发送为成功?
我们将热烈欢迎任何帮助。
【问题讨论】:
标签: reactjs firebase redux react-redux react-thunk