文档章节

化解使用rx时的竞态条件(使用flatMapLatest)

r
 reactivex
发布于 2016/04/17 20:37
字数 321
阅读 179
收藏 0

题目来自于 化解使用 Promise 时的竞态条件

问题描述: 异步请求中怎么取消前面一个未取消请求的影响。 如发送搜索请求。 两次发送, 但是后一个请求比前一个请求来得慢。 需要cancel前一个请求。

解决方法: promise中由于没有实现Cancel(IDisposable)方法, 所以需要些特殊的方法。如在上面文章中的解决方法是用的中间变量。

不过在rx中, 当调用subscribe时候, 会返回一个IDisposable对象。

例子:

搜索, 点击按钮, 触发搜索功能,返回结果+显示结果。
但是连续点击的时候后面触发的比前面得来得快, 这时候就需要考虑取消前一个subscribe.

选择operator flatMapLatest, 也叫做**selectSwitch**
创建新的observable的时候会cancel前一个observable的subscribe.
例子如下。
https://jsbin.com/caqave/edit?html,js,console,output1

测试方法, input中输入数值,点击会等待这么长时间后再在console输出,
1. 输入5000点击Search 等待5s后发现输出5000
2. 输入5000点击Search, 然后立即输入1000点击Search. 等待1s后console输出1000, 但是5000不会输出。


© 著作权归作者所有

r
粉丝 1
博文 1
码字总数 321
作品 0
广州
私信 提问
什么是竞态条件? 举个例子说明。

1、什么是竞态条件? 当两个线程竞争同一资源时,如果对资源的访问顺序敏感,就称存在竞态条件。 竞态条件(Race Condition):计算的正确性取决于多个线程的交替执行时序时,就会发生竞态条...

安小乐
06/10
57
0
雪城大学信息安全讲义 五、竞态条件

五、竞态条件 原文:Race Condition Vulnerability 译者:飞龙 1 竞态条件漏洞 下面的代码段属于某个特权程序(即 Set-UID 程序),它使用 Root 权限运行。 假设上面的程序执行的非常慢。执行...

apachecn_飞龙
2017/04/21
0
0
Java并发编程学习笔记(一)线程安全性 1

什么是线程安全性: 要编写线程安全的代码,其核心在于要对状态访问操作进行管理,特别是对共享的和可变的状态的访问。“共享”意味着变量可以由多个线程同时访问,而“可变”则意味着变量的...

ponpon_
2014/05/17
0
0
并发编程QA

1、什么时候应该使用多线程 1⃣️ 多CPU的情况 2⃣️ IO等待 如果有一个线程在执行的时候,遇到了磁盘读写或者网络传输阻塞,那么线程就需要等待,这时候占用的CPU可以释放,然后CPU就可以将...

whc20011
2016/10/18
20
0
【Java并发性和多线程】竞态条件与临界区

本文为转载学习 原文链接:http://tutorials.jenkov.com/java-concurrency/race-conditions-and-critical-sections.html 译文链接:http://ifeve.com/race-conditions-and-critical-section......

heroShane
2014/01/28
863
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx学习笔记

中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。 是连接两个独立应用程序或独立系统的软件。 web请求通过中间件可以直接调用操作系统,也可以经过中间件把请求分发到多...

码农实战
今天
5
0
Spring Security 实战干货:玩转自定义登录

1. 前言 前面的关于 Spring Security 相关的文章只是一个预热。为了接下来更好的实战,如果你错过了请从 Spring Security 实战系列 开始。安全访问的第一步就是认证(Authentication),认证...

码农小胖哥
今天
12
0
JAVA 实现雪花算法生成唯一订单号工具类

import lombok.SneakyThrows;import lombok.extern.slf4j.Slf4j;import java.util.Calendar;/** * Default distributed primary key generator. * * <p> * Use snowflake......

huangkejie
昨天
12
0
PhotoShop 色调:RGB/CMYK 颜色模式

一·、 RGB : 三原色:红绿蓝 1.通道:通道中的红绿蓝通道分别对应的是红绿蓝三种原色(RGB)的显示范围 1.差值模式能模拟三种原色叠加之后的效果 2.添加-颜色曲线:调整图像RGB颜色----R色增强...

东方墨天
昨天
11
1
将博客搬至CSDN

将博客搬至CSDN

算法与编程之美
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部