【发布时间】:2019-06-15 22:10:09
【问题描述】:
移至 angular8、rxjs6。计时器、switchMap、combineLatest、方法中断。尝试解决 combineLatest 或 Timer 属性会破坏其他属性的流程。
最初的代码在分区中断,修复它error TS2339: Property 'partition' does not exist on type 'Observable<boolean>'
init(): void {
const source = this.store.select(state => state.tether.isTiming);
const partition = (predicate) => [source.pipe(filter(predicate)), source.pipe(filter((x, i) => !predicate(x, i)))]
const [isTiming$, isNotTiming$] = partition(value => value);
const partialInterval$ = this.store.select(state => state.tether.partialInterval);
const interval$ = this.store.select(state => state.tether.interval);
isTiming$
.combineLatest(interval$, (isTiming, interval) => interval)
.withLatestFrom(partialInterval$)
.switchMap(([interval, partialInterval]) => {
return timer(partialInterval, interval)
.takeUntil(isNotTiming$);
})
.subscribe(() => {
this.store.dispatch(softDrop(true));
});
}
用管道中断重写它。
isTiming$
.combineLatest(interval$, (isTiming, interval) => interval)
.withLatestFrom(partialInterval$)
.switchMap(([interval, partialInterval]) => {
return timer(partialInterval, interval)
.takeUntil(isNotTiming$);
})
.subscribe(() => {
this.store.dispatch(softDrop(true));
});
错误 TS2339:“typeof Observable”类型上不存在属性“timer”。
错误 TS2339:“Observable”类型上不存在属性“combineLatest”。
错误 TS2339:“可观察”类型上不存在属性“withLatestFrom”。
【问题讨论】:
标签: angular typescript rxjs