У меня есть некоторый код, который отправляет данные в Firebase, ждет ответа, а затем отображает результат для пользователя:
sendRequest (data): Observable<any> {
// Send to Firebase
const key = this.db.list("Requests").push(data).key
return this.db.object(`Requests/${key}`).valueChanges().pipe(
timeout(30000),
skipWhile(request => !request["response"]), // wait for either response or timeout
take(1) // stop once a response is received
)
}
sendOrderRequest(data): Observable<string> {
return this.sendRequest(data).pipe(
map(response => {
// stuff that happens on success
}),
catchError(error => {
if (error.name === "TimeoutError") {
return "Request timed out."
} else {
return "An unknown error occurred."
}
})
)
}
confirmSubmit () {
this.sendOrderRequest(this.data).subscribe(result => {
console.log(result)
this.result = result
}
}
Время истекло, но это не моя проблема.Моя проблема в том, что когда он возвращает ошибку тайм-аута, он делает это по одной букве за раз - консоль отображает:
R
e
q
(и т. Д.)
А привязка данных в HTML (this.result
) показывает только период в самом конце.Что здесь не так?