【问题标题】:How to convert Promise<Observable<T>> to Observable<T>?如何将 Promise<Observable<T>> 转换为 Observable<T>?
【发布时间】:2021-12-01 05:16:08
【问题描述】:

我有这个功能:

someFunction(): Promise<Observable<boolean>> {
  return Promise1()
           .then(text => Promise2(text))
           .then(resultString => Observable(resultString))
}

Promise1 和 Promise2 是返回 promise 的函数,Observable 是返回 observable 的函数。

所以要获得一个可观察的值,我必须进行下一次调用:

someFunction().then(res => res.subscribe(value => //get Value));

有没有办法更改someFunction 以直接从可观察对象中获取值?

someFunction().subscribe(res => //getValue);

【问题讨论】:

  • 为什么?为什么不只使用 RxJs,您可以使用诸如 map、switchMap、zip 等结构,这样可以更容易理解您正在编写的内容(更重要的是,当您必须更改代码时,您稍后会写什么) .您的开发人员/团队伙伴会为此感谢您。

标签: typescript promise rxjs


【解决方案1】:

试试这样的?

  • from 将 promise 转换为 observable
  • switchMap 也进行此转换,因此您可以从该 lambda 中返回一个承诺
someFunction(): Observable<boolean> {
  return from(promise1()).pipe(
    switchMap(text => promise2(text)),
    switchMap(resultString => observable1(resultString))
  );
}

【讨论】:

  • 工作正常,谢谢!
猜你喜欢
  • 1970-01-01
  • 2016-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-06
相关资源
最近更新 更多