angular - rxjs 的条件发射延迟

标签 angular rxjs observable reactive-programming rxjs5

a-thousand-words

从图片到代码?

如何从 Data 和 Gates 获取 Out observable?

  • 数据是任何类型的可观察对象,例如要发送到远程后端的 JSON 对象
  • Gates 是一个 bool 值可观察值,其中刻度对应于 true,十字对应于 false。例如,Internet 连接,其中 true 表示网络可以访问,false 表示断开连接。
  • Out 是生成的可观察对象,它发出与 Data 相同的信号,有时立即发出,有时延迟,具体取决于前面的门。例如,我可以订阅 Out,以便在连接到 Internet 时将发出的 JSON 对象发布到远程 API。

最佳答案

另一种有条件地延迟 data$ 的方法是使用 delayWhen() 这样的:

const gate$ = new BehaviorSubject<boolean>(false);
const triggerF = _ => gate$.pipe(filter(v => v));
const out$ = data$
  .pipe(delayWhen(triggerF))              
  .subscribe( (v) => console.log(v));

// then trigger gate$, for instance:
setTimeout(() => gate$.next(true), 5000);
setTimeout(() => gate$.next(false), 10000);

关于angular - rxjs 的条件发射延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43912849/

相关文章:

javascript - 单个值的 Observable 与 Promise

angular - 如何使用 RxJS 处理 Angular 服务中的多个 api 调用?

angular - 从组件订阅服务中的 Observable

Angular/如何获取api返回数据

angular - 在 ngFor 中声明变量

javascript - 检查 Angular 响应式(Reactive)表单中的 FormGroups 字段中是否存在重复项

angular - 从 Angular4 上的 md-dialog 获取数据

Angular 如何仅在开发模式下创建特定路由

javascript - RxJS:每隔x秒进行一次

rxjs - RxJS可观察到,从第一次发射开始既发射先前值又发射当前值