在继续之前如何等到许多可能的可观察量 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);
}
希望对您有所帮助!
我有 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);
}
希望对您有所帮助!