Angular 2 - 超时后取消订阅

Angular 2 - Cancelling a subscription after a timeout

如果我的 API 回复的时间太长,我想忽略它。我用

this.http.get(mysqlUrl).subscribe()

获取响应。但如果完成时间超过 5 秒,我想取消该订阅。我知道我可以使用 unsubscribe(),但我如何 link 将其设置为超时值?

谢谢!

普通的 setTimeout 应该可以工作:

let subscription = this.http.get(mysqlUrl).subscribe(...);

setTimeout(() => subscription.unsubscribe(), 5000);

您可以使用 takeUntil 运算符:

this.http.get(mysqlUrl)
    .takeUntil(Observable.of(true).delay(5000))
    .subscribe(...)

import 'rxjs/add/operator/timeout

this.http.get(mysqlUrl)
    .timeout(5000)
    .subscribe()