javascript - Rxjs - 按顺序调用 Promise 和 Observable

标签 javascript http promise rxjs observable

我想调用一个返回 Promise 的函数,然后将结果传递给另一个返回 Observable 的函数。我需要按顺序执行此操作并获得可观察的最终结果,以便我可以订阅。

例如:

// Call a function and return a Promise
myPromise() {}

// Make an http call and return an Observable
myObservable() {}

// Call myPromise() then call myObservable() and return
// an Observable with the result
// *I don't know how this function should be*
myFunction() {}

// Subscription
myFunction().subscribe(
  result => console.log(result),
  error => console.log(error),
  () => console.log('completed'));

我该怎么做?

最佳答案

您可以执行以下操作:

let stream$ = Observable.defer(() => Observable.fromPromise(myPromise()))
    .flatMap(promiseResult => myObservable(promiseResult));

stream$.subscribe(obsResult => console.log(obsResult));

需要.defer来确保每次订阅时都会调用您的promise方法,而不仅仅是在初始化期间调用一次。

关于javascript - Rxjs - 按顺序调用 Promise 和 Observable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41227728/

相关文章:

javascript - 将数组数组转换为组合在一起的对象数组

javascript - JQuery 移动子页面

javascript - 等到所有 promise 都在 JavaScript 中解决

javascript - 无法在 Canvas 上绘制正方形

c# - 适用于 C# 的 Firebase REST API 示例

java - 内部服务器错误

php - 在 php 中检测远程操作系统

javascript - 关于 Promises/A+ 规范,术语 "thenable"和 "promise"有什么区别?

javascript - 如何打破 promise 中的循环?

javascript - 为什么即使在 async 函数中使用时,await 也不起作用