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())仅仅断言并不是一个特别有用的响应。请解释为什么复制品不能解决问题。如果返回承诺不是您想要的,那么为什么要使用异步函数开始呢?如果您想将承诺转换为可观察的,而不是相反,请搜索它。和往常一样,请。