Angular 如何使该函数等待另一个函数完成?

Angular 如何使该函数等待另一个函数完成?,angular,typescript,rxjs,Angular,Typescript,Rxjs,我有两个功能: this.initData(resp.Id, "") this.initSelection(resp.results) 我需要initSelection函数只有在initData函数完成后才会启动, i、 e.初始化选择函数等待初始化数据完成 以下是我如何努力实现这一目标: of(this.initData(resp.results.communityId)).subscribe(()=>this.initCustomerSelection(resp.

我有两个功能:

this.initData(resp.Id, "")
this.initSelection(resp.results)
我需要initSelection函数只有在initData函数完成后才会启动, i、 e.初始化选择函数等待初始化数据完成

以下是我如何努力实现这一目标:

of(this.initData(resp.results.communityId)).subscribe(()=>this.initCustomerSelection(resp.results))
但是上面的代码不起作用


如何使initSelection函数等待initData完成?

假设
initData
initSelection
返回一个可观察值,您可以尝试使用
switchMap

import { switchMap } from 'rxjs/operators';

this.initData(resp.Id, "").pipe(
  switchMap(() => this.initSelection(resp.results),
).subscribe(result => {
  console.log(result);
});

如果他们还承诺,你可以等待他们

async method() {
  await this.initData(resp.Id, ""); // wait for this promise to finish before going to next line
  await this.initSelection(resp.results);
}

阿里,谢谢你的来信。该函数不返回任何内容。他们只是通过函数内部的HTTP调用初始化属性。为了得到您想要的,您必须重构方法以返回承诺或观察值,以便它们按顺序运行。这取决于initData和initSelection返回的内容。看起来
initData
没有返回可观察的?