【发布时间】:2018-02-02 12:58:27
【问题描述】:
这是我的方法:
filter(value) {
this.backendCall(value)
}
我想在后端调用之间设置一个延迟,这样我的方法就不会在每次使用 Observable.timer() 和 switchMap 击键时被调用。
作为一个例子我有这个来自异步验证器的代码正是我想要的:
export function createAsyncValidator(checkFn: (value: string) => Observable<Boolean>, errorMessage: string) {
return (control: AbstractControl): Observable<ValidationErrors> => {
return Observable.timer(500).switchMap(() => {
return checkFn(control.value)
.map(result => (result ? null : { [errorMessage]: true }));
});
}
}
...但我努力将其应用于我的方法。这是我尝试过的:
filter(value) {
Observable.timer(500).switchMap(() => {
return Observable.of(value);
}).subscribe(() => {
console.log('filter', value);
// this.backendCall(value)
});
}
确实应用了延迟,但记录了所有值。我期待 swithMap 取消订阅那些在延迟期间到达的 observables。 我错过了什么?
【问题讨论】:
标签: angular observable