中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

[Node.js]四. 什么是事件,它又如何工作,EventEmitter是個什么貨?

發布時間:2020-07-10 20:07:00 來源:網絡 閱讀:5363 作者:sundunjam 欄目:web開發

四. 什么是事件,它又如何工作,EventEmitter是個什么貨?

什么是事件?

Q:哈,我想我已經學會如何使用process這個東西了!

A:不錯,學習的速度很快,那么期間有沒有發現什么問題?

Q:怎么會有問題發生在我的身上?!絕不可能!

A:哦?看樣子自滿了,那么我問你一個問題,其中在案例中使用到了process.stdin.emit這個方法,那么這個你是否理解呢?而你是否又會感悟到什么呢?

Q:額,這個嘛...,額,其實我感覺,它...(汗...)

A:呵呵,看樣子你的智商是個硬傷啊!

Q:好吧,我認輸了,我的確不知道這個做什么的,我只是照著樣子做了而已,那么請您告訴我這個有什么意義嗎?

A:好吧,這個process.stdin.emit從字面的意思來看就是“進程中的標準輸入流執行觸發操作“,而觸發的是什么就要看具體參數了,案例中是出發了“end”操作,也就是終止了輸入流的操作。

Q:哦,明白了,其實和我心里考慮的差不多,只是不敢確定而已。

A:呵呵。


Q:那么是不是只有process.stdin這個對象里面才會有這個emit方法呢?

A:不是的,這里面就要遷出一個新的問題,而且這個問題很重要,這個問題就是Node.js的核心,事件驅動模型。

Q:哇,聽著好高級,好不懂啊。

A:的確,要理解這個需要一些時間去習慣和接受。

Q:那么就請您相信的講解一下什么是事件吧。

A:好的。


A:從概念上來說,事件就是由于某種外在或內在的信息狀態發生的變化,從而導致出現了對應的反應。

Q:那能通俗的解釋一下嗎?

A:當然,Node.js的事件模型是建立在觀察者模式下的,而之前所說的監聽器也是基于這個模式的,所謂的觀察者就好比,你就是個觀察者,而你看到大排檔,就突然有了反應流出了口水,這就是觀察者模式,當然你也是監聽器,你一直在觀察或者監聽周圍的環境,當出現了你所感冒的事物,你就有了反應,比如流口水。

Q:哦,這樣一說就明白了很多,那么這樣是不是也能解釋為什么Node.js的邏輯不是線性的了呢?

A:是的,觀察者模式并沒有順序而言,它只是依據當前或者某一狀態下所觸發的事件,那么從另一方面來說,Node.js就非常適合做實時交互的應用了。

Q:那么我明白了,那么請告訴我在Node.js中事件是如何工作的吧!

它又如何工作?

A:當然可以,Node.js中的事件無處不在,基本所有的對象都會有事件,那么它如何工作呢?其實分為這么幾步。

  1. 為某個對象綁定事件(通過on這個方法綁定),也可以理解為為某個對象添加一個或多個觀察者(通過callback設定事件,即回調方法),來觀察這個對象的動作

  2. 這個對象在某個狀態或操作下,觸發事件,或者說激活觀察者行為(通過emit激活某類事件或觀察者);

  3. 被激活的事件執行相應的處理(執行callback方法);

Q:哦,那我現在知道執行過程了,可是我還是不明白,能不能給我一些實際的例子呢?

A:當然可以。

EventEmitter是個什么貨?

A:這個時候就需要EventEmitter出場了。

Q:EventEmitter?這是什么?

A:EventEmitter是Node.js中事件的核心對象,所有的事件基本都是通過這個對象完成構建的!這是非常之重要的對象,而且沒有之一。

Q:這么厲害,那么就快點告訴我該如何使用它構建我自己的事件吧!

A:好,不過也要慢慢來,下面就給出幾個簡單案例你先慢慢消化。

通過EventEmitter構建事件

代碼如下:events-emitter.js

[Node.js]四. 什么是事件,它又如何工作,EventEmitter是個什么貨?

執行效果如下:

[Node.js]四. 什么是事件,它又如何工作,EventEmitter是個什么貨?


為對象添加事件綁定

代碼如下:event-install.js

[Node.js]四. 什么是事件,它又如何工作,EventEmitter是個什么貨?

執行效果如下:

[Node.js]四. 什么是事件,它又如何工作,EventEmitter是個什么貨?


通過繼承為對象綁定事件

代碼如下:event-inherits.js

[Node.js]四. 什么是事件,它又如何工作,EventEmitter是個什么貨?

執行效果如下:

[Node.js]四. 什么是事件,它又如何工作,EventEmitter是個什么貨?

Q:上面是一些事件中的添加事件和執行的三種方法,當然還有其他的方法我沒有給你說,在后面的時間里會慢慢補充,當然你也可以先參照這個API進行操作,http://www.nodejs.org/api/events.html。

A:看樣子我還是要消化一下,看起來好像容易發生錯誤的樣子。

Q:是的,這里其實牽扯到了很多知識,不過不要問太多的為什么,首先呢你先會使用這些,等到你的知識儲備多的時候自然就慢慢懂了,但是核心的概念要明確!

A:那還不是很簡單,不過讓我先試試這寫代碼。


附件:http://down.51cto.com/data/2363291
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永靖县| 寿宁县| 江油市| 杭锦旗| 启东市| 绥化市| 行唐县| 玛多县| 栖霞市| 阜南县| 哈密市| 吉安县| 元江| 诸城市| 芜湖县| 瑞丽市| 寿阳县| 江门市| 突泉县| 长乐市| 南澳县| 平武县| 忻城县| 柞水县| 阿勒泰市| 镶黄旗| 丰台区| 松桃| 东城区| 北川| 云安县| 昭觉县| 泸州市| 麻栗坡县| 楚雄市| 和硕县| 濮阳县| 白山市| 剑川县| 保定市| 铜川市|