toPromise 没有 return 最后观察到的值
toPromise doesn't return last observed value
这里是一个可以 运行 与 ts-node 的例子。为什么结果2显示的是值而不是3.
import { interval, Subject } from 'rxjs';
import { startWith, takeUntil, tap, map } from 'rxjs/operators';
const done = new Subject();
let times = 0;
function test() {
return interval(5000).pipe(
startWith(0),
map(() => times++ ),
tap(n => {
console.log(n);
if (n === 3) {
done.next();
}
}),
takeUntil(done),
).toPromise();
}
test().then(n => {
console.log('result: ', n);
}).catch(err => {
console.error('error: ', err.message);
});
输出是:预期结果:3
0
1
2
3
result: 2
这里是一个可以 运行 与 ts-node 的例子。为什么结果2显示的是值而不是3.
import { interval, Subject } from 'rxjs';
import { startWith, takeUntil, tap, map } from 'rxjs/operators';
const done = new Subject();
let times = 0;
function test() {
return interval(5000).pipe(
startWith(0),
map(() => times++ ),
tap(n => {
console.log(n);
if (n === 3) {
done.next();
}
}),
takeUntil(done),
).toPromise();
}
test().then(n => {
console.log('result: ', n);
}).catch(err => {
console.error('error: ', err.message);
});
输出是:预期结果:3
0
1
2
3
result: 2