響應式編程是一種面向數據流和變化傳播的編程範式。這意味着能夠在編程語言中很方便地表達靜態或動態的數據流,而相關的計算模型會自動將變化的值經過數據流進行傳播。編程
例如,在命令式編程環境中,a:=b+c表示將表達式的結果賦給a,而以後改變b或c的值不會影響a。但在響應式編程中,a的值會隨着b或c的更新而更新。
電子表格程序就是響應式編程的一個例子。單元格能夠包含字面值或相似"=B1+C1"的公式,而包含公式的單元格的值會依據其餘單元格的值的變化而變化。網絡
響應式編程最初是爲了簡化交互式用戶界面的建立和實時系統動畫的繪製而提出來的一種方法,但它本質上是一種通用的編程範式。框架
ReactiveCocoa (RAC) 是一個Objective-C語言內實現響應式編程的框架。編程語言
RAC提供了大量的可以完成發送 value's stream 的API。動畫
RAC經過使用信號量(RACSignal)來完成獲取當前值和將來值的功能,而不像傳統的程序開發同樣須要聲明大量的變量。spa
Josh Abernathy這樣解釋它:設計
程序接收輸入產生輸出。輸出就是對輸入作了一些事的結果。輸入,轉換,輸出,完成。orm
輸入是應用動做的所有來源。點擊、鍵盤事件、定時器事件、GPS時間、網絡請求響應都算是輸入。這些事件被傳遞到應用中,應用將他們以某種方式混合,產生告終果:就是輸出。生命週期
輸出一般會改變應用的UI。開關狀態變化、列表有了新的元素都是UI變化。也有可能讓磁盤上某個文件產生變化,或者產生一個API請求,這都是應用的輸出。事件
但不像傳統的輸入輸出設計,應用的輸入輸出能夠產生不少次。應用打開後,不僅是一個簡單的 輸入→工做→輸出 就構成了一個生命週期。應用常常有大量的輸入並基於這些輸入產生輸出。