RxJS的Observables如何取消Promise?

5
  • 据我所知,目前我们无法取消 Promise。

但是当 Promise 被 RxJS Observables 包装时,即使流处于活动状态,我也可以取消订阅。观察者如何做到这一点?


你能举一个 Promise 包装在 Observable 中的例子吗? - sabithpocker
1个回答

7

这个 Promise 实际上并没有被取消,rxjs 只是负责忽略它的结果。你可以很容易地尝试一下:

const promise = new Promise(resolve => {
  setTimeout(() => {
    console.log("Resolving");
    resolve(42);
  }, 2000);
});

const obs$ = Rx.Observable.fromPromise(promise);
const sub = obs$.subscribe(console.log);
setTimeout(() => sub.unsubscribe(), 1000);

您将在控制台中看到Resolving的输出,但不会从可观察对象中获取任何值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接