codecamp

RxJS using

创建一个使用资源的 Observable,该资源将与 Observable 同时处理。

using<T>(resourceFactory: () => void |Unsubscribable, observableFactory: (resource: void | Unsubscribable) => any): Observable<T>

参量

resourceFactory 创建任何资源对象的函数 实现 unsubscribe方法。
observableFactory 一个功能  创建一个 Observable,可以使用注入的资源对象。

returns

Observable<T>:行为与所返回的 Observable 相同的 Observable observableFactory,但 当完成,出错或取消订阅时,它们也会调用 unsubscribe创建的资源对象。

描述

当您在观察到的情况下开始清理时,请使用它。

using是工厂操作员,它接受两种功能。 第一个函数返回一个一次性资源。 它可以是实现 的任意对象 unsubscribe方法 。 第二个功能将被注入 该对象,并应返回一个 Observable。 该 Observable 可以在其执行期间使用资源对象。 传递给这两个函数的函数 using每当有人订阅时, 都会被调用-既不是 Observable 也不是Observable 订阅之间将以任何方式共享资源对象。

由返回的 using订阅 Observable时,将从第二个函数返回的 Observable 进行订阅 也一样 其所有通知(下一个值,完成和错误事件)将由输出不变地发出 可观察的。 但是,如果有人取消订阅 Observable 或来源 Observable 本身的完成或错误, 的 unsubscribe资源对象上 方法将被调用。 这可以用来进行任何必要的清理, 否则必须手动处理。 请注意,当有人进行操作时,不会发出完整或错误通知 通过取消对 Observable 的订阅 unsubscribe,因此 using可以用作挂钩,使您能够 确保在可观察的执行过程中需要存在的所有资源将在适当的时间被处置。

也可以看看

RxJS UnsubscriptionError
RxJS VirtualTimeScheduler
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

RxJS operators

RxJS fetch

RxJS testing

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }