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()
如果我的 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()