RxJs

脚本加载 = 脚本下载 + 执行

一般是同时 下载4个js文件 依次执行先返回的js文件

回调地狱 问题

一个变量 什么时候变化 你是很难跟踪的

try...catch 是没有用的

   try{
       a = 1/b
   }catch(error){
       a = 100
   }
   console.log(a) //100

必须 在真正执行的地方 try catch

如果 你监听了一个函数 这个函数会不会一直存在呢
这个函数 一直在内存里 就叫 内存泄露

let febIterator = ()=>{
    let array = [0,1]
    let index = 0
    return{
        next(){
            let value = array[index]
            if(array[index] === undefined){
                array[index] = array[index-1] + array[index-2]
                value = array[index]
            }
            index += 1
            return {
                value: value,
                done:false
            }
        }
    }
}

let fi = febIterator()
fi.next()      0
fi.next()      1
fi.next()      1
fi.next()      2
fi.next()      3
fi.next()      5

迭代器 可以 用来 懒计算 你问我的时候 我 再计算

var febIterator2 = function*(){
    let array = [0,1]
    let index = 0
    while(true){
        let value = array[index]
        if(array[index] === undefined){
            array[index] = array[index-1] + array[index-2]
            value = array[index]
        }
        index ++
        yield value
    }
}
var fi2 = febIterator2()

代码不会一直执行吗 不会的
它会每次 yield 之后 就停下来 等待你下次调动 next()

如果你不调用 next() 我这个 while 循环 是不会进入下一次循环的

观察者模式 /发布订阅模式 -----平时的事件监听

迭代器 主动要求 变化

观察者 被动接受 变化

观察者模式 按钮 在迭代 开发者 按钮在把你 当做迭代器用

人把按钮 当做 被观察的物体 我们是观察者 是开发者被 next() 了

按钮在主动 通知你

button onclick observe.next()

一个 getTopRatedFilms 函数
传入一个 user

获取它的 videoLists
遍历一下 把lists 里面的videos 过滤下
找出评分为5分的
得到的是多个数组
拍扁 concatAll

执行函数 遍历结果 打印出来

一个 getElemenetDrags 函数

传入一个 元素el

获取它的 mouseDowns //记录下 用户所有时间段 鼠标点击的事件
遍历一下 把 mouseDown s 里面的 mouseDown 做一个映射
每个mouseDown 之后有一系列的 mouseMove
关联它之后所有 mouseUp 之前的 有效mouseMoves 事件
得到的是多个数组 //数组里多个 有效的 mouseMove 事件
拍扁 concatAll

执行函数 遍历结果 获取鼠标移动的位置 把元素的位置 变为鼠标的位置

为了便于 捕获错误

在成功的回调后 添加 错误回调 结束回调

很像 promise 里的 then 但是 rxjs 提供了 更多的 操作 // 50多个

concatAll
{
    ...{1},
    .........{2............3},
    ............{},
    ..................{4}
}

同时记时
一段时间 先发射1 完了记录下一个
一段时间 发射2 还没完 继续记录
一段时间 有个空值 先放到缓存 先不发射 完了 记录下一个
一段时间 有个4 先放到缓存 先不发射 完了 记录下一个
继续记录发射完2 之后 的值
一段时间 发射3 完了 查看缓存里的值
第一个是空 不发射 完了 查看下一个
马上 发射4

输入框 提示

1、依次发射abcde 发几个请求?

1个 用函数防抖 过滤

2、竟态问题 跑步的问题 race condition

1 先跑 2 后跑

谁先到终点 不知道 我哪知道 谁跑的快啊

可以用 取消请求api 解决
一旦发送第二个请求 前面的这个请求 就要 手动的取消订阅

在rxjs里 不需要取消订阅 只要你告诉我 收集到哪里为止 takeUntil

定义一个迭代器

用户按的所有按键
函数防抖 250ms 250ms以内 有重复的按键 我就把 最后一次按键 发请求

遍历 发射的值 ------每次debounce结束之后 给我发送的值
我就用 getJson 请求
请求的值是 input的 value

我们请求 是不是 有可能失败啊
retry(3) 如果你 发送请求失败了 自动重新发送 最多发送3次 要是 还是失败 就不管了
有的时候 你不需要重发
什么时候啊
当用户 又开始按键的时候

我的请求 需要一段时候响应 响应的时候 就会更新UI
当用户 又开始按键的时候 这里就有一段 劫持

如果你的请求还没有成功 用户就又按键了 这个响应 不要了
什么时候要呢 用户又开始 按键之前 你已经响应了

abc 会对应一个c 一个c会对应 像abc的请求 一个请求 会对应成一个响应
这个响应会更新我们的UI 如果这个响应慢了 就不要了 因为用户又输入了一次值
最终 把所有的响应 concat进来

每次响应 更新UI
如果出错了 就给用户显示下 出错信息
如果没有出错 就对每一个响应 updateUI

----------a-b-c------------d-e-------------f----------->


-------------------c--------------e-------------f---------->

 
--------------------abc------------abcde----------abcdef---->

回到最初的代码

播放一部电影
首先 把播放器初始化 一下
然后播放的时候 我要看 用户能不能播放

首先player 初始化
初始化成功后 发射一个值
监听用户的 播放尝试 ---- 用户点击播放按钮 用户按了下回车 用户按了下空格
对每次尝试 我要回去下 moveId
然后对电影进行建权
失败就重试 最多3次
如果用户取消了 我就 takeUntil

如果建权成功了 我们会拿到电影票
每次播放 会尝试拿它的 电影票
如果拿到电影票了 就把所有的电影票合起来

对每一次电影票 就拿播放器 播放
怎么可能有 三个电影票 都是在 同一个播放器里 播放的啊
播完第一个 播第二个

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容