Typescript 扁平化承诺<;可观察<;T>&燃气轮机;
我有一个函数,它执行如下操作:Typescript 扁平化承诺<;可观察<;T>&燃气轮机;,typescript,rxjs,Typescript,Rxjs,我有一个函数,它执行如下操作: async foo() { await doSomething(); return getObservableFromSomewhereElse(); } 问题是wait使签名成为承诺。因为我已经返回了一个Observable,所以我只想将承诺折叠到Observable中,以便签名是Observable 注意:doSomething()必须出现在GetObservableFromSomeWhere()之前 我认为,Observable.defe
async foo() {
await doSomething();
return getObservableFromSomewhereElse();
}
问题是wait
使签名成为承诺
。因为我已经返回了一个Observable,所以我只想将承诺折叠到Observable中,以便签名是Observable
注意:doSomething()
必须出现在GetObservableFromSomeWhere()
之前
我认为,Observable.defer()
可能会有帮助,但我不确定
关于如何使此函数只返回注释线程中提到的
可观察的?,您可以将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());
}
它不能只返回一个可观察的
,异步
函数必须返回一个承诺或包含在承诺中的东西。它可以返回一个承诺
,只需使用.toPromise()
.Hm,这个问题与“我如何等待可观测的Rx”
有点不同。更重要的是“如何等待承诺并在此之后发出可观察的”。然后你不能使用异步函数,只返回可观察的。应该有类似于observable.fromPromise(foo()).flatMap(any=>getobserveFromSomeWhere())代码>仅仅断言并不是一个特别有用的响应。请解释为什么复制品不能解决问题。如果返回承诺不是您想要的,那么为什么要使用异步函数开始呢?如果您想将承诺转换为可观察的,而不是相反,请搜索它。和往常一样,请。