在Angular RxJS Observable方法中等待Promise结果

预期下面的方法是Observable,它需要来自promise函数的一些数据才能继续执行。

    async function observableFunc(): Observable<string> {
      const response = await promiseFunc()
      return anotherObservableFunc(response)
    }

这将引发错误,因为异步函数应该返回承诺。

I tried to use .toPromise() but then I can’t do something using .pipe() later on like this:

observableFunc().pipe(...)

一个开发人员打算在这里做什么? 🤔

评论
cnisi
cnisi

您必须将诺言转变为可观察的

function observableFunc(): Observable<string> {
  return from(promiseFunc())
   .pipe(
      swithMapTo(anotherObservableFunc())
    );

}

我假设anotherObservableFunc返回一个可观察的。

点赞
评论
噬魂
噬魂

尝试这个

promiseFunc(){
      return new Promise(function(resolve, reject) {
        resolve('start of new Promise');
      });
  }

以这种方式创造新的承诺

您也可以等待几秒钟尝试这样

promiseFunc(){
  return new Promise((resolve, reject) => {
    setTimeout(() => resolve("done!"), 1000)
  });
}
点赞
评论
打酱油
打酱油

You can use from, which converts a Promise (among other things) to an Observable:

function observableFunc(): Observable<string> {
  return from(promiseFunc()).pipe(
    concatMap(() => anotherObservableFunc())
  );
}
点赞
评论