成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

js實(shí)現(xiàn)對(duì)主題的訂閱(topic訂閱),內(nèi)附源碼

guqiu / 1013人閱讀

摘要:這就是的不過(guò)想不明白這么優(yōu)秀的一個(gè)庫(kù)怎么會(huì)沒(méi)有實(shí)現(xiàn)對(duì)主題的訂閱這個(gè)功能呢,是不是中有替代方法,有小伙伴知道的話歡迎給我說(shuō)一下,不勝感激。

有不合理和錯(cuò)誤的地方歡迎小伙伴雅正,與大家共勉
理解對(duì)主題訂閱

angular中的訂閱的實(shí)現(xiàn)是用的RX.js庫(kù),我們可以用Subject來(lái)實(shí)現(xiàn)事件的訂閱和發(fā)布

// 聲明一個(gè)可觀察對(duì)象
const obervable = new Subject();
// 訂閱
observable.subscript( data => {
    handler...
})
// 發(fā)布
observable.next(data)

項(xiàng)目中離不了對(duì)同一個(gè)可觀察對(duì)象的不同主題的訂閱,比如單頁(yè)面應(yīng)用中某個(gè)負(fù)責(zé)權(quán)限的可觀察對(duì)象,進(jìn)行登錄和登出這兩個(gè)主題進(jìn)行訂閱,這個(gè)可觀察會(huì)根據(jù)用戶的登錄和登出去訂閱者發(fā)布登錄和登出的事件,讓訂閱者去執(zhí)行異形系列的操作(大型項(xiàng)目中這有利于降低功能間的耦合)

// 聲明一個(gè)可觀察對(duì)象,也是一個(gè)事件發(fā)布對(duì)象
const obervable = new Events();
// 對(duì)某個(gè)話題訂閱
obervable.subscript("login",handler)
obervable.subscript("logout",handler)
// 對(duì)某個(gè)主題發(fā)布實(shí)踐
observable.publish("login",data)
observable.publish("logout",data)

給大家看個(gè)熟悉的,jQuery的on方法,方便小伙伴理解

// 選取一個(gè)dom元素
const dom = $("#obervableDom")
// 對(duì)這個(gè)dom元素的主題進(jìn)行訂閱(事件監(jiān)聽)
dom.on("click",handler)
// dom元素發(fā)布主題(觸發(fā)事件)
dom.click()

熟悉ionic的小伙伴可能有話說(shuō)了,這不就是ionic的Events嗎。這就是ionic的Events,不過(guò)想不明白R(shí)X.js這么優(yōu)秀的一個(gè)庫(kù)怎么會(huì)沒(méi)有實(shí)現(xiàn)對(duì)主題的訂閱這個(gè)功能呢,是不是RX.js中有替代方法,有小伙伴知道的話歡迎給我說(shuō)一下,不勝感激。

下面是我根據(jù)ionic Events類的思路和代碼重寫的一個(gè)新的Events,用了一些ES6的語(yǔ)法。用法文檔沒(méi)有變化(

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/99030.html

相關(guān)文章

  • 觀察者設(shè)計(jì)模式

    摘要:定義觀察者設(shè)計(jì)模式中有一個(gè)對(duì)象被稱為根據(jù)觀察者維護(hù)一個(gè)對(duì)象列表,自動(dòng)通知它們對(duì)狀態(tài)的任何修改。與觀察者模式不同,它允許任何訂閱者實(shí)現(xiàn)一個(gè)適當(dāng)?shù)氖录幚沓绦騺?lái)注冊(cè)并接收發(fā)布者發(fā)布的主題通知。 觀察者設(shè)計(jì)模式是一個(gè)好的設(shè)計(jì)模式,這個(gè)模式我們?cè)陂_發(fā)中比較常見,尤其是它的變形模式訂閱/發(fā)布者模式我們更是很熟悉,在我們所熟悉jQuery庫(kù)和vue.js框架中我們都有體現(xiàn)。我在面試中也曾經(jīng)被問(wèn)到o...

    kviccn 評(píng)論0 收藏0
  • RocketMQ為什么要保證訂閱關(guān)系一致性?

    摘要:微信公眾號(hào)后端進(jìn)階,專注后端技術(shù)分享框架分布式中間件服務(wù)治理等等。 微信公眾號(hào)「后端進(jìn)階」,專注后端技術(shù)分享:Java、Golang、WEB框架、分布式中間件、服務(wù)治理等等。 前段時(shí)間有個(gè)朋友向我提了一個(gè)問(wèn)題,他說(shuō)在搭建 RocketMQ 集群過(guò)程中遇到了關(guān)于消費(fèi)訂閱的問(wèn)題,具體問(wèn)題如下: showImg(https://segmentfault.com/img/remote/1460...

    gekylin 評(píng)論0 收藏0
  • 設(shè)計(jì)一個(gè)基于svg涂鴉組件(一)

    摘要:基于寫了一個(gè)涂鴉組件,說(shuō)項(xiàng)目之前先附上幾張效果圖項(xiàng)目地址由于篇幅問(wèn)題,本文先總體介紹一下項(xiàng)目的大概情況,重點(diǎn)介紹一下組件間的通信方式。一項(xiàng)目說(shuō)明該項(xiàng)目是基于構(gòu)建的多頁(yè)應(yīng)用,使用開發(fā),以組件的方式組織代碼。 基于svg寫了一個(gè)涂鴉組件,說(shuō)項(xiàng)目之前先附上幾張效果圖: 項(xiàng)目地址:SVGraffiti showImg(https://segmentfault.com/img/bVbassI?w...

    cartoon 評(píng)論0 收藏0
  • JS設(shè)計(jì)模式之Obeserver(觀察者)模式、Publish/Subscribe(發(fā)布/訂閱)模式

    摘要:觀察者模式定義設(shè)計(jì)模式中對(duì)的定義一個(gè)對(duì)象稱為維持一系列依賴于它觀察者的對(duì)象,將有關(guān)狀態(tài)的任何變更自動(dòng)通知給它們。如圖模式比較觀察者模式則多了一個(gè)類似于話題調(diào)度中心的流程,發(fā)布者和訂閱者解耦。 Obeserver(觀察者)模式 定義 《js設(shè)計(jì)模式》中對(duì)Observer的定義:一個(gè)對(duì)象(稱為subject)維持一系列依賴于它(觀察者)的對(duì)象,將有關(guān)狀態(tài)的任何變更自動(dòng)通知給它們。 《設(shè)計(jì)模...

    荊兆峰 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

guqiu

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<