RxJS observables 如何取消承诺?

Sri*_* Sg 4 javascript rxjs

  • 据我所知,我们现在不能取消承诺

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

Ing*_*ürk 5

承诺实际上并没有被取消,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);
Run Code Online (Sandbox Code Playgroud)

您将Resolving在控制台中看到打印,但 observable 中没有任何值。