在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())
      );
    }