【问题标题】:how to return observable from function that has a promise如何从具有承诺的函数返回可观察对象
【发布时间】:2019-09-11 09:33:26
【问题描述】:

我有一个带有承诺的函数。 我希望函数在承诺发生时返回可观察的。 查看我的代码:

  public exportAsExcel() : Observable<void>
  {
    let workbook = new Workbook();
    .....
    ......
    workbook.xlsx.writeBuffer().then((data) => 
    {
        this.doSomething(data);
        return of();
    });

  }    

【问题讨论】:

    标签: angular promise rxjs observable


    【解决方案1】:

    使用from,它将你的承诺变成可观察的:

    import { from } from 'rxjs';
    import { map } from 'rxjs/operators';
    
    // ...
    
    return from(workbook.xlsx.writeBuffer()).pipe(
     map(...)
    )
    

    【讨论】:

      【解决方案2】:
      return new Observable(obs=>{
      
             let workbook = new Workbook();
              .....
             ......
             workbook.xlsx.writeBuffer().then((data) => 
             {
                this.doSomething(data);
                return obs.next(data);
              });
          })
      

      或者使用 rxjs frommap

      return from(workbook.xlsx.writeBuffer()).pipe(map(data => {
         // process something
         return dataTransformed
      }))
      

      【讨论】:

        猜你喜欢
        • 2019-11-12
        • 2018-12-16
        • 2019-07-23
        • 1970-01-01
        • 2019-02-18
        • 2018-04-11
        • 2020-10-11
        • 2018-02-01
        • 2020-12-10
        相关资源
        最近更新 更多