摘要:補(bǔ)充說(shuō)明響應(yīng)式編程采用了訂閱觀察者設(shè)計(jì)模式,使訂閱者可以將通知主動(dòng)發(fā)送給各訂閱者。一個(gè)響應(yīng)式編程的實(shí)現(xiàn)庫(kù)是一個(gè)庫(kù),它通過(guò)使用序列來(lái)編寫異步和基于事件的程序。
或許"響應(yīng)式布局"這個(gè)名單大家都聽(tīng)過(guò)或者都自己實(shí)現(xiàn)過(guò),那么"響應(yīng)式編程"是什么呢?下面我們來(lái)具體聊一聊。
我的理解從字面意思上我們可以大致理解為:所有的事件存在于一條事件總線上,所有的事件都可以看作未來(lái)某個(gè)時(shí)間將要發(fā)生的事件流(stream),當(dāng)事件總線上的事件執(zhí)行完后會(huì)主動(dòng)去通知"觀察他們的對(duì)象",比如我們經(jīng)常用到的settimeout、異步等都屬于該范疇。
下面是官方解釋:在某種程度上,這并不是什么新東西。事件總線(Event buses)或咱們常見(jiàn)的單擊事件就是一個(gè)異步事件流,你可以觀察這個(gè)流,也可以基于這個(gè)流做一些自定義操作(原文:side effects,副作用,本文皆翻譯為自定義操作)。響應(yīng)式就是基于這種想法。你能夠創(chuàng)建所有事物的數(shù)據(jù)流,而不僅僅只是單擊和懸停事件數(shù)據(jù)流。 流廉價(jià)且無(wú)處不在,任何事物都可以當(dāng)作一個(gè)流:變量、用戶輸入、屬性、緩存、數(shù)據(jù)結(jié)構(gòu)等等。比如,假設(shè)你的微博評(píng)論就是一個(gè)跟單擊事件一樣的數(shù)據(jù)流,你能夠監(jiān)聽(tīng)這個(gè)流,并做出響應(yīng)。
補(bǔ)充說(shuō)明"響應(yīng)式編程"采用了“訂閱/觀察者”設(shè)計(jì)模式,使訂閱者可以將通知主動(dòng)發(fā)送給各訂閱者。
RxJs一個(gè)響應(yīng)式編程的實(shí)現(xiàn)庫(kù)RxJS 是一個(gè)庫(kù),它通過(guò)使用 observable 序列來(lái)編寫異步和基于事件的程序。它提供了一個(gè)核心類型 Observable,附屬類型 (Observer、 Schedulers、 Subjects) 和受 [Array#extras] 啟發(fā)的操作符 (map、filter、reduce、every, 等等),這些數(shù)組操作符可以把異步事件作為集合來(lái)處理。
以下幾個(gè)概念是RxJs中比較重要的:
Observable (可觀察對(duì)象): 表示一個(gè)概念,這個(gè)概念是一個(gè)可調(diào)用的未來(lái)值或事件的集合。
Observer (觀察者): 一個(gè)回調(diào)函數(shù)的集合,它知道如何去監(jiān)聽(tīng)由 Observable 提供的值。
Subscription (訂閱): 表示 Observable 的執(zhí)行,主要用于取消 Observable 的執(zhí)行。
Operators (操作符): 采用函數(shù)式編程風(fēng)格的純函數(shù) (pure function),使用像 map、filter、concat、flatMap 等這樣的操作符來(lái)處理集合。
Subject (主體): 相當(dāng)于 EventEmitter,并且是將值或事件多路推送給多個(gè) Observer 的唯一方式。
Schedulers (調(diào)度器): 用來(lái)控制并發(fā)并且是中央集權(quán)的調(diào)度員,允許我們?cè)诎l(fā)生計(jì)算時(shí)進(jìn)行協(xié)調(diào),例如 setTimeout 或 requestAnimationFrame 或其他。
實(shí)例說(shuō)明注冊(cè)事件監(jiān)聽(tīng)器的常規(guī)寫法。
var button = document.querySelector("button"); button.addEventListener("click", () => console.log("Clicked!"));
使用 RxJS 的話,創(chuàng)建一個(gè) observable 來(lái)代替。
var button = document.querySelector("button"); Rx.Observable.fromEvent(button, "click") .subscribe(() => console.log("Clicked!"));
未完待續(xù)...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/89174.html
摘要:原文鏈接編程方法論響應(yīng)式與代碼設(shè)計(jì)實(shí)戰(zhàn)序,來(lái)自于微信公眾號(hào)次靈均閣正文內(nèi)容在一月的架構(gòu)和設(shè)計(jì)趨勢(shì)報(bào)告中,響應(yīng)式編程和函數(shù)式仍舊編列在第一季度的早期采納者中。 原文鏈接:《Java編程方法論:響應(yīng)式RxJava與代碼設(shè)計(jì)實(shí)戰(zhàn)》序,來(lái)自于微信公眾號(hào):次靈均閣 正文內(nèi)容 在《2019 一月的InfoQ 架構(gòu)和設(shè)計(jì)趨勢(shì)報(bào)告》1中,響應(yīng)式編程(Reactive Programming)和函數(shù)式...
摘要:中的常見(jiàn)寫法先看下這段代碼。聲明式編程,就是告訴機(jī)器你想要的是什么,讓機(jī)器想出如何去做。最獨(dú)特的特性之一,是其非侵入性的響應(yīng)式系統(tǒng)。的縮寫將遍歷此對(duì)象所有的屬性。這一過(guò)程被稱為依賴收集。組件的顯示,數(shù)據(jù)的體現(xiàn)大部分都是由承載,傳遞。 目錄 緣起 Android開(kāi)發(fā)中的常見(jiàn)寫法 JQuery中的常見(jiàn)寫法 命令式編程 聲明式編程 React中的常見(jiàn)寫法 Vue的常見(jiàn)寫法 你肯定熟悉響應(yīng)...
摘要:概念響應(yīng)式編程,異步非阻塞就是響應(yīng)式編程,與之相對(duì)應(yīng)的是命令式編程。的另外一種實(shí)現(xiàn)方式就是消息隊(duì)列。非阻塞設(shè)計(jì)利用規(guī)范中的實(shí)現(xiàn)實(shí)現(xiàn)代碼鏈接 注: 本文是由讀者觀看小馬哥公開(kāi)課視頻過(guò)程中的筆記整理而成。更多Spring Framework文章可參看筆者個(gè)人github: spring-framework-lesson 。 0. 編程模型與并發(fā)模型 Spring 5實(shí)現(xiàn)了一部分Reacti...
摘要:是針對(duì)異步數(shù)據(jù)流的編程。所以這個(gè)數(shù)據(jù)流只包含一個(gè)簡(jiǎn)單的反射值。且慢,天生就是處理異步數(shù)據(jù)流的,為何不把請(qǐng)求的響應(yīng)作為一個(gè)攜帶數(shù)據(jù)的流呢么么噠,概念上沒(méi)有問(wèn)題,我們就來(lái)操作一下。你需要明確通知觀察者或者訂閱者數(shù)據(jù)流的到達(dá)或者錯(cuò)誤的發(fā)生。 Reactive Programming是神馬? 互聯(lián)網(wǎng)上有很多不是很友好的解釋。維基百科 寬泛而玄乎。 Stackoverflow教科書式的解釋非常不...
閱讀 2274·2021-11-25 09:43
閱讀 3149·2021-10-14 09:42
閱讀 3498·2021-10-12 10:12
閱讀 1581·2021-09-07 10:17
閱讀 1913·2019-08-30 15:54
閱讀 3198·2019-08-30 15:54
閱讀 1571·2019-08-30 15:53
閱讀 1934·2019-08-29 11:21