【问题标题】:Using Promise inside a Observable在 Observable 中使用 Promise
【发布时间】:2021-01-04 07:32:10
【问题描述】:

由于在 Observable 中我们可以选择调用 Promise ,所以我有一个重新分类的说明。

由于 promise 在声明后立即执行,是否会在不附加订阅方法的情况下执行它? 而且既然它不能被取消,为什么会有人想到在一个可观察对象中调用一个 Promise 。

Rx.Observable.fromPromise():

const computeFutureValue = new Promise((resolve, reject) => {
//make http api call
});

Rx.Observable.fromPromise(computeFutureValue)
.subscribe(
val => {
console.log(val);
},
err => {
console.log(`Error occurred: ${err}`);
},
() => {
console.log('All done!');
});

【问题讨论】:

    标签: javascript promise rxjs observable


    【解决方案1】:

    正如您所说,在您创建 Promise 时会执行 Promises 主体。 所以当你创建这个 Promise 时:

    const computeFutureValue = new Promise((resolve, reject) => {
      //make http api call
    });
    

    无论您接下来做什么,都会执行 http 请求。使用from(或fromPromise)将Promise 转换为Observable 并订阅此Observable 不会影响Promise 并以任何方式执行。

    如果您希望能够使用 Observables 提供的所有操作符,或者因为您的应用在某些时候需要使用 Observables,您可能希望将 Promise 转换为 Observables。

    如果您只想在订阅 Observable 时创建和执行 Promise,可以使用 defer,请在此处查看我的答案:Convert Promise to Observable

    【讨论】:

      猜你喜欢
      • 2019-07-10
      • 2017-07-29
      • 2018-11-25
      • 1970-01-01
      • 2020-12-18
      • 1970-01-01
      • 1970-01-01
      • 2018-10-20
      相关资源
      最近更新 更多