如果耗时过长,我想忽略来自API的响应。我用
$(window).on('mousein',function(e){
$('#sidebar').css({'right':'0px'});
}
$(window).on('mouseout',function(e){
$('#sidebar').css({'right':'-300px'});
});
获得回复。但是如果完成时间超过5秒,我想取消订阅。我知道我可以使用unsubscribe(),但是如何将其链接到超时值?
谢谢!
答案 0 :(得分:7)
普通setTimeout
应该有效:
let subscription = this.http.get(mysqlUrl).subscribe(...);
setTimeout(() => subscription.unsubscribe(), 5000);
答案 1 :(得分:7)
您可以使用takeUntil运算符:
this.http.get(mysqlUrl)
.takeUntil(Observable.of(true).delay(5000))
.subscribe(...)
答案 2 :(得分:2)
import 'rxjs/add/operator/timeout
this.http.get(mysqlUrl)
.timeout(5000)
.subscribe()