Firebase выдает ошибку, если запрос обрабатывается слишком долго из-за медленных rnet соединений. Вот ошибка:
@ firebase / firestore: Firestore (7.9.2): Не удалось связаться с бэкэндом Cloud Firestore. Соединение не удалось 1 раз. Самая последняя ошибка: FirebaseError: [code = unavailable]: операция не может быть завершена. Обычно это указывает на то, что в данный момент ваше устройство не имеет исправного соединения Inte rnet. Клиент будет работать в автономном режиме до тех пор, пока не сможет успешно подключиться к бэкэнду.
Я столкнулся с странным поведением с избыточными значениями при попытке отловить эту ошибку. Моя функция api смогла перехватить ошибку firebase в своем блоке catch()
, но не была поймана в блоке catch()
в действии thunk. Вот некоторый псевдокод, чтобы проиллюстрировать это лучше:
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))
})
}
Я создал песочницу с кодом для воспроизведения ошибки. Не стесняйтесь поиграть с кодом. Когда вы go отключены от сети, когда приложение извлекает данные, возникает ошибка firebase, и консоль покажет, что API-интерфейс сервера перехватил ошибку, но не удалось выполнить действие thunk. Я не уверен, является ли это ошибкой с моей стороны или ограничением библиотеки redux-thunk или библиотеки firebase.
Вопрос: Как мне справиться с этой ошибкой, чтобы мое действие thunk не отправляло ошибку как успешную?
Любая помощь будет приветствоваться.