我有一个函数可以执行以下操作:
async foo() {
await doSomething();
return getObservableFromSomewhereElse();
}
问题是await
使签名成为Promise<Observable<T>>
。因为我已经返回了一个Observable,所以我只想将Promise折叠到Observable中,以便签名为Observable<T>
。
注意:doSomething()
必须在getObservableFromSomewhereElse()
之前发生。
我认为Observable.defer()
可能对此有所帮助,但我不确定。
有关如何使此功能的任何想法都返回Observable<T>
?
答案 0 :(得分:1)
如评论主题中所述 - 您可以将foo
函数保留为async
并将其承诺结果重新用于
async function foo() {
await doSomething();
}
function bar() {
return Observable
// emits one value from resolved promise
.fromPromise(foo())
// maps it to your observable stream
.flatMap(() => getObservableFromSomewhereElse());
}