我想调用一个返回 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/