rxjs入門4之rxjs模式設計

2022-05-10 09:26:17 字數 2433 閱讀 1049

觀察者模式其實在日常編碼中經常遇到,比如dom的事件監聽,**如下

function clickhandler(event) 

document.body.addeventlistener('click', clickhandler)

簡而言之:觀察者模式就如同上**,有乙個事件源『dom 的click事件』 也就是abservable,有乙個觀察者abserver clickhandler函式,有乙個訂閱機制(addeventlister),當dom的click事件觸發時候,會通過訂閱機制通知abserver 執行函式clickhandler函式。

下面是構建乙個觀察者模式的簡單例子

function producer() 

this.listeners = ;

}// 加入監聽的方法

producer.prototype.addlistener = function(listener) else

}// 移除監聽的方法

producer.prototype.removelistener = function(listener)

// 傳送通知的方法

producer.prototype.notify = function(message) )

}

接下來建立例項

var egghead = new producer(); 

// new 出乙個 producer 例項叫 egghead

function listener1(message)

function listener2(message)

egghead.addlistener(listener1); // 註冊監聽

egghead.addlistener(listener2);

egghead.notify('a new course!!') // 當某件事情方法時,執行

//a new course!! from listener1

//a new course!! from listener2

iterator 是乙個物件,它的就像是乙個指標(pointer),指向乙個資料結構並產生乙個序列(sequence),這個序列會有資料結構中的所有元素(element)。

迭代者(iterator,也稱為「迭代器」)指的是能夠遍歷⼀個資料集合的物件,因為資料集合的實現⽅式很多,可以是⼀個陣列,也可以是⼀個樹形結構,也可以是⼀個單向鍊錶……迭代器的作⽤就是提供⼀個通⽤的介面,讓使⽤者完全不⽤關⼼這個資料集合的具體實現⽅式。

自己實現簡單的迭代器

function iteratorfromarray(arr) 

this._array = arr;

this._cursor = 0;

}iteratorfromarray.prototype.next = function() :;}

生成器是一種返回迭代器的函式,通過function關鍵字後的星號(*)來表示,函式中會用到新的關鍵字yield。星號可以緊挨著function關鍵字,也可以在中間新增乙個空格

// 生成器

function *createiterator()

// 生成器能像正規函式那樣被呼叫,但會返回乙個迭代器

let iterator = createiterator();

console.log(iterator.next().value); // 1

console.log(iterator.next().value); // 2

console.log(iterator.next().value); // 3

function *createiterator(items)

}let iterator = createiterator([1, 2, 3]);

console.log(iterator.next()); // ""

console.log(iterator.next()); // ""

console.log(iterator.next()); // ""

console.log(iterator.next()); // ""

// 之後的所有呼叫

console.log(iterator.next()); // ""

observable 其實就是這兩個 pattern 思想的結合,observable 具備生產者推送資料的特性,同時能像序列,擁有序列處理資料的方法(map, filter...)!

更簡單的來說,observable 就像是乙個序列,裡面的元素會隨著時間推送。

RxJS入門(4) 深入Sequence

接著 3 這一張分成兩部分來翻譯。html 上面 1 5標籤的說明如下 這是使用leaflet來渲染地圖的div佔位符。這是我們用來載入jsonp內容的工具函式。我們在合理的縮放級別上設定洛杉磯 這裡 比較多 的中心座標來初始化leaflet地圖。我們告訴leaflet為我們的地圖設定預設的主題集。...

Rxjs 學習入門

定義觀察者 var observer error function error complete function 同時與訂閱者進行繫結 observable.subscribe observer 1.1 生產基本資料 var observable rx.observable create func...

譯 RxJS 排程器入門

rxjs 中的排程器 schedulers 是用來控制事件發出的順序和速度的 傳送給觀察者的 它還可以控制訂閱 subscriptions 的順序。為了不搞得太理論化,先考慮下這個示例 const a rx.observable.of 1,2 const b rx.observable.of 10 ...