【问题标题】:Observable is returning each letter of string separatelyObservable 分别返回字符串的每个字母
【发布时间】:2019-06-22 02:04:56
【问题描述】:

我有一些代码可以将数据发送到 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
电子
q
(等等)

HTML (this.result) 中的数据绑定只显示最后的句点。这里出了什么问题?

【问题讨论】:

    标签: angular typescript firebase rxjs observable


    【解决方案1】:

    catchError 应该返回一个 observable。

    catchError(error => {
        if (error.name === "TimeoutError") {
            return of("Request timed out.")
        } else {
            return of("An unknown error occurred.")
        }
    })
    

    【讨论】:

    • 谢谢,我想我遗漏了一些明显的东西。
    猜你喜欢
    • 1970-01-01
    • 2017-04-04
    • 2021-04-15
    • 1970-01-01
    • 1970-01-01
    • 2021-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多