【发布时间】:2019-09-30 07:05:32
【问题描述】:
我想构造一个函数来创建并返回一个Observable。根据此函数接收的参数,它应该创建Observable 并直接返回它,或者(在特殊情况下)在返回Observable 之前调用另一个异步函数。
抽象例子:
async function doSomethingAsync(){
return 'success';
}
function returnObservable(specialCase: boolean): Observable<any>
const observable = new Observable(
observer =>
observer.next(1)
}
);
if(specialCase) {
doSomethingAsync().then(
then => {
// this does not work, of course, but that's what I would like to be able to do
return observable;
}
)
} else {
return observable;
}
}
现在我的问题是我不能调用异步函数然后返回Observable。我可以使整个 returnObservable 函数异步,而只是 await doSomethingAsync 但随后 returnObservable 函数将返回 Promise 返回 Observable - 这不是我想要的。此函数的使用者应该直接接收 Observable。
我希望我能把我的问题说清楚。有什么办法可以解决这个问题吗?
【问题讨论】:
-
一旦你的代码变成异步的 - 其余的也将是异步的,它是病毒式的。
-
@zerkms - 说得很好。但由于 OP 正在返回一种异步构造(和
Observable),所以还是有希望的。 :-) -
@zerkms “这是病毒式的”......哈哈。
-
@T.J.Crowder 我从 GPL 中重用了它,这被称为“病毒许可”en.wikipedia.org/wiki/Viral_license /cc briosheje
标签: javascript typescript promise rxjs observable