【问题标题】: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 from 和 map
return from(workbook.xlsx.writeBuffer()).pipe(map(data => {
// process something
return dataTransformed
}))