【发布时间】:2019-07-16 16:03:42
【问题描述】:
我正在尝试使用 RxJS 流实现可切换的自动保存功能。目标是:
- 启用自动保存后,将更改发送到服务器。
- 禁用自动保存时,缓冲更改并在重新启用自动保存时将其发送到服务器。
这是我遇到的:
autoSave$ = new BehaviorSubject(true);
change$ = new Subject();
change$.pipe(
bufferToggle(
autoSave$.pipe(filter(autoSave => autoSave === false)),
() => autoSave$.pipe(filter(autoSave => autoSave === true)),
),
concatMap(changes => changes),
concatMap(change => apiService.patch(change)),
).subscribe(
() => console.log('Change sent'),
(error) => console.error(error),
);
感谢bufferToggle,我能够在autoSave 关闭时缓冲更改并在重新启用时发送它们。
问题是当autoSave 被启用时,什么都没有通过。我理解这是因为bufferToggle 忽略了即将到来的流量,而其开放的 observable 没有发出。
我觉得我应该有一个条件来绕过bufferToggle,同时启用autoSave,但我所有的尝试都惨遭失败。
有什么想法可以实现吗?
【问题讨论】: