How to get RxJS Observable events in zero time?

前端 未结 1 1634
太阳男子
太阳男子 2020-12-21 03:09

I\'m collecting all the events of an Observable to a data array:

相关标签:
1条回答
  • 2020-12-21 03:29

    You can create an instance of the VirtualTimeScheduler and can specify it in the call to interval.

    If you then call flush on the scheduler after subscribing, the events will be emitted immediately:

    const scheduler = new Rx.VirtualTimeScheduler();
    
    const obs$ = Rx.Observable
      .interval(500, scheduler)
      .take(4);
    
    let data = [];
    const start = scheduler.now();
    
    obs$.subscribe(
      value => {
        data.push({
          time: scheduler.now() - start,
          data: value
        });
      },
      () => {},
      () => {
        console.log(JSON.stringify(data, null, 2));
      }
    );
    
    scheduler.flush();
    .as-console-wrapper { max-height: 100% !important; top: 0; }
    <script src="https://unpkg.com/rxjs@5.2.0/bundles/Rx.js"></script>

    0 讨论(0)
提交回复
热议问题