combineLatest 但删除已完成的可观察对象
combineLatest but remove completed observables
如何组合最新的值但动态删除已完成的可观察值? combineLatest
运算符不会删除已完成的可观察对象,它只是重复它们发出的最后一个值,直到所有可观察对象完成。
我想要这样的东西:
combineLatestAlive([interval(100).pipe(take(2)), interval(100)]).subscribe(console.log)
//[0,0]
//[1,0]
//[1,1]
//[1]
//[2] ... and so on
我添加了两个运算符。
- endWith: 像undefined一样追加结束标记
- map:变换数组
combineLatest([interval(100).pipe(take(2), endWith(undefined)), interval(100)]).pipe(
map(values => values.filter(v => v !== undefined))
).subscribe(console.log);
结果是:(您想要的结果有 [1, 1]
但 [1,
已经是完成值。)
[ 0, 0 ]
[ 1, 0 ]
[ 0 ]
[ 1 ]
[ 2 ]
...
如何组合最新的值但动态删除已完成的可观察值? combineLatest
运算符不会删除已完成的可观察对象,它只是重复它们发出的最后一个值,直到所有可观察对象完成。
我想要这样的东西:
combineLatestAlive([interval(100).pipe(take(2)), interval(100)]).subscribe(console.log)
//[0,0]
//[1,0]
//[1,1]
//[1]
//[2] ... and so on
我添加了两个运算符。
- endWith: 像undefined一样追加结束标记
- map:变换数组
combineLatest([interval(100).pipe(take(2), endWith(undefined)), interval(100)]).pipe(
map(values => values.filter(v => v !== undefined))
).subscribe(console.log);
结果是:(您想要的结果有 [1, 1]
但 [1,
已经是完成值。)
[ 0, 0 ]
[ 1, 0 ]
[ 0 ]
[ 1 ]
[ 2 ]
...