【发布时间】:2020-03-18 11:37:27
【问题描述】:
我正在进行不返回值的 Web api 调用,我只对它们的 HTTP 状态代码感兴趣。 但我希望这些调用在指定的时间跨度后超时。
因为我错过了阅读文档,所以我在 web-call-observable 上使用了 timeout-operator,如下所示:
this.someProvider.requestStatus(someValue)
.pipe(timeout(this.timeoutMilliseconds))
.subscribe(() => console.log("Success"),...)
问题是,我在订阅者函数中收到了成功的网络调用,但即使在超时时间跨度之后,调用仍然失败,因为源 observable 没有返回值 - 我认为。
当我没有得到 HTTPResponse 并且只有正文(如果有的话)时,有没有办法使用 rxjs 操作符来做到这一点?
【问题讨论】:
-
考虑使用
takeUntil运算符 -
@KarthigeyanVellasamy 是的,我没有得到任何值,因为 api 没有发送值,尽管成功 - “回调”仍然执行,因为调用成功......但在那之后timeout-operator 仍然会抛出错误,因为没有发出任何值。
-
所以,如果我理解正确,您不想看到错误,对吧? @Velulian
-
@Herman Lule 我不想在调用成功时发出它,即使没有省略任何值。
-
timeout如果源 Observable 在一段时间内没有发出,则会抛出错误。但如果源代码完成,那么timeout将停止。所以看起来你的源 Observablethis.someProvider.requestStatus()没有完成。
标签: angular typescript rxjs timeout observable