美文网首页
什么是 Rxjs 的 subscription

什么是 Rxjs 的 subscription

作者: 华山令狐冲 | 来源:发表于2021-12-05 08:39 被阅读0次

什么是订阅? Subscription 是一个对象,该对象代表一个一次性资源,通常是一个 Observable 的执行。 Subscription 有一个重要的方法,unsubscribe,它不接受任何参数,只处理订阅持有的资源。 在之前的 RxJS 版本中,订阅被称为“Disposable”。

看个例子:

import { interval } from 'rxjs';

const observable = interval(1000);
const subscription = observable.subscribe((x) => console.log(x));
// Later:
// This cancels the ongoing Observable execution which
// was started by calling subscribe with an Observer.

console.log('ok');

const handler = () => subscription.unsubscribe();
setTimeout( handler , 10000);

这行代码将在打印0~9 个数字后,也就是10秒后终止。

Subscription 本质上只有一个 unsubscribe() 函数来释放资源或取消 Observable 执行,避免内存泄漏。

也可以将一个 subscription 添加到另一个 subscription 里,然后同时关闭这两个 subscription:

import { interval } from 'rxjs';
 
const observable1 = interval(400);
const observable2 = interval(300);
 
const subscription = observable1.subscribe(x => console.log('first: ' + x));
const childSubscription = observable2.subscribe(x => console.log('second: ' + x));
 
subscription.add(childSubscription);
 
setTimeout(() => {
  // Unsubscribes BOTH subscription and childSubscription
  subscription.unsubscribe();
}, 1000);

在 SAP Spartacus 代码里,有时我们能看到手动新建一个新的 subscription:

原因正在于此:

将若干个 subscription 添加到同一个 subscription:

这样,在 Component 的 ngOnDestroy 方法里,我们就能用一个 subscription,通过调用一次 unsubscribe 就能关掉所有的子订阅了。

更多Jerry的原创文章,尽在:"汪子熙":


相关文章

  • rxjs学习入门心得(三)Subscription订阅

    推荐我的Rxjs教程:Rxjs系列教程目录 Subscription订阅 什么是 Subscription(订阅)...

  • 什么是 Rxjs 的 subscription

    什么是订阅? Subscription 是一个对象,该对象代表一个一次性资源,通常是一个 Observable 的...

  • 浅析Angular之RxJS

    本文结构: 什么是RxJS RxJS有什么特点 RxJS核心概念 什么是RxJS 在javaScript中,我们可...

  • RxJS

    RxJS官网[https://rxjs.dev/] 1 概述 1.1 什么是 RxJS ? RxJS 是一个用...

  • 02RxJS创建Observables和Subscription

    创建Observables 可以用new Observable创建,但实际情况更多的是用of、from、inter...

  • Rxjs的使用

    什么是RxJS? RxJS是ReactiveX编程理念的JavaScript版本。ReactiveX来自微软,它是...

  • RxJS沉浸式入门教程

    什么是RxJS【Reactive Extensions for JavaScript】 首先RxJS是一个库,是针...

  • 基于 version 6 的 RxJS 入门

    分享几个网站RxJS官网开发手册 RxJS 是什么? 我们可以简单的认为 RxJS 是一套处理异步编程的 API ...

  • RxJS简易入门

    什么是RxJS?RxJS解决什么样的问题?通过怎么样的手段?带着这些问题,我们便来学习一下RxJS,本文旨在帮助大...

  • 什么是RxJS?

    RxJS字面意思就是:JavaScript的响应式扩展(Reactive Extensions for JavaS...

网友评论

      本文标题:什么是 Rxjs 的 subscription

      本文链接:https://www.haomeiwen.com/subject/rdwqzltx.html