研究背景
最近使用的前端框架 Angular 2 將 RxJS 作為很重要的依賴。要掌握 Angular 2 看來務(wù)必需要了解 RxJS。
RxJS 的背景
Reactive Programming
Wiki 的定義:
在計(jì)算機(jī)中,響應(yīng)式編程是一種面相數(shù)據(jù)流和變化傳播的編程范式。這意味著可以在編程語言中很方便的表達(dá)靜態(tài)或動(dòng)態(tài)的數(shù)據(jù)流,而相關(guān)的計(jì)算模型會(huì)自動(dòng)將變化的值通過數(shù)據(jù)流進(jìn)行傳播。響應(yīng)式編程最初是為了簡(jiǎn)化交互式用戶界面的創(chuàng)建和實(shí)時(shí)系統(tǒng)動(dòng)畫的繪制而提出來的一種方法,但它本質(zhì)上是一種通用的編程范式。例如在 MVC 架構(gòu)中,響應(yīng)式編程允許將相關(guān)模型的變化自動(dòng)反應(yīng)到視圖上,反之亦然。
很方便粗略的區(qū)分三種計(jì)算機(jī)編程方式。轉(zhuǎn)換程序從一組給定的輸入計(jì)算出結(jié)果。典型的例子是編譯器或者計(jì)算器;交互式程序以他們自己的速度和用戶或者其他程序交互。從一個(gè)用戶的視角看,分時(shí)操作系統(tǒng)就是交互的;響應(yīng)式編程維持了一個(gè)和他們的環(huán)境持續(xù)的交互,但是以一個(gè)由環(huán)境決定的速度,而不是程序本身。交互式程序工作以他們自己的節(jié)奏工作并通常處理通信,而響應(yīng)式編程僅作為響應(yīng)外部的需求工作并通常以精確的中斷處理應(yīng)對(duì)。實(shí)時(shí)程序通常是響應(yīng)式的。然而有些通常不被認(rèn)為是實(shí)時(shí)的,例如協(xié)議、系統(tǒng)驅(qū)動(dòng)、或者或者人機(jī)接口處理器也是響應(yīng)式程序。
ReactiveX
ReactiveX 是一個(gè)對(duì)于使用可觀察流的異步編程的 API。Reactive 是一個(gè)源自于觀察者模式、迭代器模式和函數(shù)式編程的最佳思維的結(jié)合。
RxJS
RxJS 是 ReactiveX 的 JavaScript 實(shí)現(xiàn)。RxJS 將異步數(shù)據(jù)抽象為數(shù)據(jù)流,并提供對(duì)數(shù)據(jù)流進(jìn)行各種轉(zhuǎn)換操作的 JavaScript 接口。
比較詳細(xì)的說明可以參見此文章