【发布时间】:2018-08-20 12:26:52
【问题描述】:
我有一个 Observable,当我订阅它时,我想要:
- 如果正在执行,则返回当前执行的结果
- 如果没有,请重新/执行 Observable。
例如:
我有一个wait 函数。该函数等待1秒,返回当前的time()
function wait(): Observable<number> {
return new Observable<number>((observer) => {
setTimeout(() => {
observer.next((new Date).getTime());
observer.complete();
}, 1000);
});
}
现在,我的代码每 0.4 秒调用一次 wait 函数。
- 第一次调用
wait(0.4 秒)将等待 1 秒并返回当前时间 - 对
wait的第二次调用(0.8 秒),因为有wait的执行,将返回与第一个点相同的可观察对象和相同的结果 - 第三次调用
wait(1.2 秒)将再次等待 1 秒,因为没有执行 - 等
【问题讨论】:
-
为什么当第一个调用创建一个新的 Observable 时,第三个调用等待是 1s,它将在 0.4s = 1.4s 后完成 1s。
-
可能你需要exhaustMap() github.com/btroncone/learn-rxjs/blob/master/operators/…