在继续之前如何等到许多可能的可观察量 returns 之一

How to wait until one of many possible observables returns before continuing

我有 switch 语句,可以根据输入进行不同的 http 调用。

看起来像这样:

switch(myObject.type){
    case 'Type1':
        myObject.name = this.service1.getName(myObject.id);
        break;
    case 'Type2':
        myObject.name = this.service2.getName(myObject.id);
        break;
    case 'Type3':
        myObject.name = this.service3.getName(myObject.id);
        break;
}

紧接在这些之后我有一条语句来保存条目:

this.storageService.saveEntry(myObject);

但在保存条目时,它没有设置名称 属性。

在保存条目之前等待对 return 的任何一个异步调用的正确方法是什么?

如果您必须使用 switch 语句,您也许可以让每个分支 return 成为可观察对象,然后在 subscribe() 中设置 myObject.name 或使用 [=15 等运算符=] 和 switchMap 将值传递给 this.storageService.saveEntry()

foo(): Observable<any> {
    switch(myObject.type){
        case 'Type1':
            return this.service1.getName(myObject.id);
            break;
        case 'Type2':
            return this.service2.getName(myObject.id);
            break;
        case 'Type3':
            return this.service3.getName(myObject.id);
            break;
    }
}

bar() {    
    foo()
      .do(name => myObject.name = name)
      .switchMap(name => this.storageService.saveEntry(myObject))
      .subscribe(response => console.log(response);
}    

希望对您有所帮助!