响应式编程 (Reactive Programming)

相关框架: Rx, Bacon.js, RAC

响应式编程

响应式思维

响应式编程, 为异步数据流编程, 是一种面向数据流和变化传播的编程范式, 数据更新是相关联的

创建(create)流, 将流进行组合(combine) 和 过滤(filter); input, merge, filter, map

"点击按钮"事件流

一个流就是一个将要发生的以时间为序的事件序列. 它能发射出三种不同的信号: 一个数据值(data value, 某种类型的), 一个错误(error) 或 一个完成(completed)的信号

监听流的行为叫做订阅, 观察者设计模式

e.g. 假设实现一个双击事件流(两次或两次以上)

Multi clicks stream

响应式编程提高了代码的抽象层次, 这样就可以专注于业务逻辑的事件定义, 而不是尝尝捣鼓那些大量的实现细节. RP的代码可能会更简洁清晰.

Response metastream

Reactive Cocoa

iOS开发中事件: Target, Delegate, KVO, 通知, 时钟, 网络异步回调

ReactiveCocoa用信号接管了iOS中的所有事件.

ReactiveCocoa特征

next completed error

RAC特点: 通过block函数式+链式的编程, 可以让所有相关的代码继承在一起.
使用时需要注意循环引用, @weakify(self) / @strongify(self) 组合解除循环引用

FRP或RAC的一些简图

Reactive -- Flicker

构建 Reactive System

FRP Code

Callback Style Code

Event Stream

Behavior

filter

map

merge

until

then

lift

FRP编程 -- 乐高积木 -- 组合能力Composability

Callback风格 -- event-driven框架


参考

通俗解释什么是响应式编程?
函数式反应型编程(FRP) —— 实时互动应用开发的新思路, by 邓际锋


------ END ------
0%