通过一个实际例子理解Angular rxjs Observable的异步行为

244 阅读1分钟

源代码:

ngOnInit(): void {
    const a = new Observable((observer) => {
      observer.next(1);
      observer.next(2);
      observer.next(3);
      setTimeout(() => {
        observer.next(4);
        observer.complete();
      }, 1000);
    });
    console.log('just before subscribe');
    a.subscribe({
      next: x => console.log('got value ' + x),
      error: err => console.error('something wrong occurred: ' + err),
      complete: () => console.log('done'),
    });
    console.log('just after subscribe');
  }

执行结果:

先执行完a.subscribe和console.log(‘just after subscribe’), 再执行完1秒超时后的observer.next(4):

在这里插入图片描述