在 Angular 中,我们可以使用 switchMap 操作符来解决递归 RxJS Observables 执行顺序问题。以下是一个示例代码:
import { Component, OnInit } from '@angular/core';
import { Observable, of } from 'rxjs';
import { switchMap } from 'rxjs/operators';
@Component({
  selector: 'app-example',
  template: `
    {{ result }}
  `,
})
export class ExampleComponent implements OnInit {
  result: string;
  ngOnInit() {
    this.recursiveObservable(0).subscribe(
      value => this.result = value.toString(),
      error => console.error(error)
    );
  }
  recursiveObservable(value: number): Observable {
    return of(value).pipe(
      switchMap(val => {
        if (val < 10) {
          return this.recursiveObservable(val + 1);
        } else {
          return of(val);
        }
      })
    );
  }
}
 在上面的代码中,我们有一个 recursiveObservable 方法,它返回一个 Observable。在该方法中,我们使用 switchMap 操作符来判断当前值是否小于 10。如果小于 10,我们就递归调用 recursiveObservable 方法并传入增加后的值;否则,我们返回一个 of Observable 来结束递归。
在组件的 ngOnInit 生命周期钩子中,我们订阅了 recursiveObservable 方法返回的 Observable,并将结果赋值给 result 变量,以在模板中显示。
通过这种方式,我们可以确保递归 Observables 的执行顺序是正确的。