我有看起来像这样的功能。
myFunction() {
//some logic
if (expression) {
return value;
}
Observable.forkJoin(
service.someHttpGet,
service.anotherHttpGet
).subscribe((data) => {
//some logic
return value;
});
}
请注意,如果表达式为true,则函数将立即返回一个值。否则,退货可能会有所延迟。所以当我写
const x=myFunction();
如果expression为true,则x将具有数据,否则为undefined。我需要能够调用此函数并等待结果被延迟。我该怎么办?
答案 0 :(得分:3)
如果函数的返回值取决于至少一个Observable
,则函数的返回类型也必须为Observable
或至少为Promise
。当然,这会改变函数的用法,但是没有其他选择。
You can read more about basic JavaScript callbacks here。
您的代码将被修改为:
myFunction(): Observable<any> {
if (expression) {
return Observable.of(value);
}
return Observable.forkJoin(
service.someHttpGet,
service.anotherHttpGet
).pipe(
map(values => //here you'll modify the values and return the result)
);
}
使用方法:
myFunction().subscribe(val => x = val);