RxJS超时不起作用
问题描述:
我试图在超过3秒时退出Observable流。问题是,当我复制并粘贴相同的值几次时,distinctUntilChanged
运算符不会让输入流通过。所以我想超时如果没有字符串流通过它。这是我的。RxJS超时不起作用
import { Subject } from "rxjs/Subject";
import "rxjs/add/operator/filter";
import "rxjs/add/operator/debounceTime";
import "rxjs/add/operator/distinctUntilChanged";
import "rxjs/add/operator/switchMap";
import "rxjs/add/operator/timeout";
this._searchSubject
.filter(val => val.length > 0)
.debounceTime(500)
.distinctUntilChanged()
.timeout(3000)
.switchMap(userSearchInput => {
...api call that returns Promise
})
.subscribe(searchResults => {
...do stuff with the result
});
答
超时会抛出TimeoutError
,你在处理这个错误吗?
Rx.Observable.from(new Promise(resolve => setTimeout(resolve, 1000)))
.timeout(500)
.subscribe(console.log, ({ message }) => console.error(message));
或者您可以使用timeoutWith
& Rx.Observable.empty()
结束流:
Rx.Observable.from(new Promise(resolve => setTimeout(resolve, 1000)))
.timeoutWith(500, Rx.Observable.empty())
.subscribe(null, null,() => console.log('done'));