创建运算符
ajax
bindCallback
: 把回调 API 转化为返回 Observable
的函数
bindNodeCallback
: 把 Node.js 式回调 API 转换为返回 Observable
的函数。
defer
empty
from
fromEvent
fromEventPattern
generate
interval
of
range
throwError
timer
iif
调度器
queue
: 接受三个参数,第一个是 callback
,第二参数是延时执行的 missll
, 第三个参数是第一个参数的实参
asap
: 会尽全力最小化当前执行代码和开始调度任务的时间,类似于 promise.then 微任务。比异步任务先执行。
async
: 异步地调度任务,通过将它们放入 JavaScript
事件循环中。它被认为是适时地延时任务或者 按时间间隔重复调度任务的最佳实践
animationFrame
: 如果没有延时, animationFrame 调度器可以被用来创建丝滑的浏览器动画。它可以保证在下一次浏览器重绘之前 调度执行任务,从而尽可能高效的执行动画。
多播
Subject
: 类似广播的 Observable
,称之为多播。
BehaviorSubject
: 行为多播,内部默认传入数值 0,每当订阅者添加订阅时会接收历史广播推送的最后一条订阅信息,其他行为和 Subject
是一样的。
ReplaySubject
: 重放多播,接收一个数值参数,参数决定订阅者添加订阅时会接收历史广播推送的最后几条条订阅信息,其他行为和 Subject
是一样的。
AsyncSubject
: 异步多播,只有在调用 complete
时,才会把最后送出的值返回,有点类似 promise
的 then
情况。
多播运算符
multicast
: 将一个 observable
关联到 subject,但是需要手动执行 connect
, 也需要适当时机去卸载。可以使用 refCount
实现自动化关联。
publish
: multicast(new Rx.Subject())
是这个简化方式
publishBehavior
: multicast(new Rx.BehaviorSubject(0))
是这个简化方式
publishLast
: multicast(new Rx.AsyncSubject(1))
是这个简化方式
publishReplay
:
share
: publish
+ refCount
可以在简化成 share
refCount
: 使用了 multicast
连接方式就能使用 refCount
,能够在被订阅的时机自动帮你执行 connect
,当全部退订时,原 observable