分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

[RxJS] Implement RxJS `switchMap` by Canceling Inner Subscriptions as Values are Passed Through

发布时间:2023-09-06 02:16责任编辑:沈小雨关键词:script

switchMap is mergeMap that checks for an "inner" subscription. If the "inner" subscription exists, switchMap unsubscribes from that "inner" subscription which effectively "cancels" any pending pushes.

import { fromEvent, of, Subscriber } from "rxjs"import { ?scan, ?delay, ?mergeMap, ?switchMap} from "rxjs/operators"class MySwitchMapSubscriber extends Subscriber { ?innerSubscription ?constructor(sub, fn) { ???super(sub) ???this.fn = fn ?} ?_next(value) { ???console.log(`outer`, value) ???const o$ = this.fn(value) ???if (this.innerSubscription) { ?????this.innerSubscription.unsubscribe() ???} ???this.innerSubscription = o$.subscribe({ ?????next: value => { ???????console.log(` ?inner`, value) ???????this.destination.next(value) ?????} ???}) ?}}const mySwitchMap = fn => source => ?source.lift({ ???call(sub, source) { ?????source.subscribe( ???????new MySwitchMapSubscriber(sub, fn) ?????) ???} ?})const observable$ = fromEvent( ?document, ?"click").pipe( ?scan(i => i + 1, 0), ?mySwitchMap(value => of(value).pipe(delay(500))))const subscriber = { ?next: value => { ???console.log(value) ?}, ?complete: () => { ???console.log("done") ?}, ?error: value => { ???console.log(value) ?}}observable$.subscribe(subscriber)

[RxJS] Implement RxJS `switchMap` by Canceling Inner Subscriptions as Values are Passed Through

原文地址:https://www.cnblogs.com/Answer1215/p/9715065.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved