Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在按钮的单击句柄中使用mergeMap订阅内部可观察对象

如何在按钮的单击句柄中使用mergeMap订阅内部可观察对象
EN

Stack Overflow用户
提问于 2019-12-05 07:15:17
回答 1查看 71关注 0票数 0

在下面的"addToWishlist“函数中,我将获取外部可观察数组的结果,并将其连接到内部可观察数组,然后对内部可观察数组调用next方法。我在按钮的单击处理程序"onAddToWishlist“上调用方法"addToWishlist”。该按钮位于产品列表的每一项上。问题是,如果我点击按钮两次,我只能得到我点击的产品。第一次单击时,我得到一个空数组。例如,如果我有产品1,2和3,如果我点击产品1,我会得到一个空的数组,如果我点击产品2,我就会得到阵列中的产品1,如果我再次点击任何其他产品,当产品2也出现在阵列中时。请检查下面的代码,还包括应用程序的图像。Product list

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
addToWishlist(productId: string) {
      return this.getProduct(productId).pipe(mergeMap(
         product => {
            return this.wishlist.pipe(
               take(1),
               tap(wishlist => {
                  this._wishlist.next(wishlist.concat({ ...product }));
               })
            );
         }
      ));
   }

get wishlist() {
      return this._wishlist.asObservable();
}

// Click handler for the wishlist button
onAddToWishlist(productId: string) {
      this.wishlistSub = 
       this.productsService.addToWishlist(productId).subscribe(wishlist => {
         this.wishlist = wishlist;
         console.log(wishlist); 
      });
} 
EN

回答 1

Stack Overflow用户

发布于 2019-12-06 10:10:50

问题在于你没有在你的管道中操作这个值。为了立即得到结果,您还需要在订阅时映射到您期望的新值。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   addToWishlist(productId: string) {
      return this.getProduct(productId).pipe(mergeMap(
         product => {
            return this.wishlist.pipe(
               take(1),
               map(wishlist => wishlist.concat({ ...product })),
               tap(wishlist => this._wishlist.next(wishlist)),
            );
         }
      ));
   }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59190019

复制
相关文章
RxJS mergeMap和switchMap
假设现在有一个简单的任务:页面上有一个按钮,当你点击按钮的时候,需要启动一个定时器。使用 RxJS 我们可以可以很方便地实现上述功能:
阿宝哥
2019/11/05
2.1K0
在 Flutter 中创建可拖动的浮动操作按钮[Flutter专题15]
Flutter 允许您使用FloatingActionButton小部件添加浮动操作按钮。但是,它不允许您拖动按钮。如果你想让它可拖动怎么办。本教程有一个示例,说明您需要做什么才能创建浮动操作按钮,只要它位于父小部件内,就可以将其拖动到屏幕周围的任何位置。
徐建国
2021/12/07
5.7K0
在 Flutter 中创建可拖动的浮动操作按钮[Flutter专题15]
RabbitMQ在php中的使用----发布与订阅
安装教程 rabbitmq和php的amqp扩展教程网上有很多,大家可以自行查询,例如:Linux系统安装RabbitMQ及PHP安装amqp拓展库详细教程
美团骑手
2021/01/18
2K0
RxJS在快应用中使用
Rx(ReactiveX)是一种用来管理事件序列的理想方法,提供了一套完整的 API,它的设计思想组合了观察者模式,迭代器模式和函数式编程。响应式编程在各个编程语言中都有对应的实现,应用较为广泛的是 RxJava 以及 RxJS。
dadong
2020/05/12
1.9K0
HTML单击按钮弹出悬浮窗+页面遮罩
<meta charset="utf-8" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport" />
用户7718188
2021/10/08
15.8K1
面向对象中的内部类
在描述事物时,若一个事物内部还包含其他事物,就可以使用内部类这种结构。比如,电脑Computer类中包含鼠标 Mouse类 ,这时, Computer 就可以使用内部类来描述,定义在成员位置。 如:
星哥玩云
2022/09/08
9790
面向对象中的内部类
【MATLAB】基本绘图 ( 句柄值 | 对象句柄值获取 | 创建对象时获取句柄值 | 函数获取句柄值 | 获取 / 设置 对象属性 | 获取对象属性 )
对象的句柄值 , 类似于编程时的引用 , 将对象的句柄值赋值给变量后 , 该变量就可以代表指定的绘图对象 ;
韩曙亮
2023/03/29
6.7K0
【MATLAB】基本绘图 ( 句柄值 | 对象句柄值获取 | 创建对象时获取句柄值 | 函数获取句柄值 | 获取 / 设置 对象属性 | 获取对象属性 )
类模块应用示例:获取单击的命令按钮名称
这个示例来源于ozgrid.com,有兴趣的朋友可以研究。在用户窗体上共有24个命令按钮,如下图1所示。
fanjy
2023/10/04
2950
类模块应用示例:获取单击的命令按钮名称
在 JavaScript 中如何克隆对象?
我们假设一个变量 name 具有一个与之关联的原始值(number,string,boolean,undefined 和null)。 如果我们将此变量 name 复制到另一个变量name2 ,则原始变量的任何修改都不会影响到第二个变量,因为它们是原始值。
前端小智@大迁世界
2022/06/15
4.6K0
在 Vue 对象模块内如何使用 this 对象?
众所周知,js 中的 this 对象在不同作用域下指代不同的对象实例,并且在以下 4 种场景中经常会“不知所向”:
LIYI
2019/09/02
2.7K0
RxJS & React-Observables 硬核入门指南
Redux-observable是一个基于rxjs的Redux中间件,允许开发者使用异步操作。它是redux-thunk和redux-saga的替代品。
前端修罗场
2022/07/29
6.9K0
RxJS & React-Observables 硬核入门指南
JS观察者订阅模式
剁椒鱼鳞
2023/05/26
3470
JS观察者订阅模式
构建流式应用:RxJS 详解
作者:TAT.郭林烁 joeyguo 原文地址 最近在 Alloyteam Conf 2016 分享了《使用RxJS构建流式前端应用》,会后在线上线下跟大家交流时发现对于 RxJS 的态度呈现出两大类
腾讯AlloyTeam
2017/05/02
7.4K2
Android之按钮点击事件(单击、双击、长按等)
在布局文件中添加按钮点击事件 1、在xml文件中 为 Button 添加android:onclick属性
程思扬
2023/07/24
2.4K0
RxJS:给你如丝一般顺滑的编程体验(建议收藏)
怀着对于RxJS这项技术的好奇,笔者花了数天时间研究了这项技术,并肝了一包枸杞才完成这篇文章的撰写,属实不易。不过也正是通过这段时间的学习,我发现这项技术在一定程度上可以解决我在日常业务中遇到的一些痛点,以及有种想马上应用到自己的新项目中的欲望,的确这种以数据流的理念来管控大型项目中的数据能给人带来一种十分优雅的编程体验。
前端达人
2021/01/27
7.2K1
RxJS:给你如丝一般顺滑的编程体验(建议收藏)
点击加载更多

相似问题

RxJS mergeMap等待内部观察

12

RxJS -如何使用mergemap或map简化可观察的订阅

120

从可订阅对象创建可观察对象?

16

在mergeMap内部使用concat

10

在mergeMap中取消重复订阅

118
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文