相关
- 官网:https://nodejs.org/en/
- API:https://nodejs.org/api/
- 慕课网:进击Node.js基础(一):http://www.imooc.com/learn/348
说点啥
上次提到了 api中的Url与Http 。 这次我们继续跟着视频来走,看一下事件Events
上期回顾总结
我们在看API的时候,发现有些方法里的参数是用’[]’包含起来的,包含起来的:非必要参数
eg:
emitter.removeAllListeners([event])
如果event存在,则移除event相关的监听,如果enent不存在,就是移除所有的监听(大家看了视频就懂了)
先来看一段上篇文章的代码:
http.get(url, function (res) {
var html = ''
res.on('data', function(data) {
html += data
})
res.on('end', function(){
filterChapters(html)
})
}).on('error', function() {
console.log('获取网站数据出错!')
})
当我看到这里的时候,我会问,data是啥啊?哪儿来的?
这就要追溯到这次文章的男主Event了。
API
Events
Events
Class: events.EventEmitter
emitter.addListener(event, listener)
emitter.on(event, listener)
emitter.once(event, listener)
emitter.removeListener(event, listener)
emitter.removeAllListeners([event])
emitter.setMaxListeners(n)
emitter.getMaxListeners()
EventEmitter.defaultMaxListeners
emitter.listeners(event)
emitter.emit(event[, arg1][, arg2][, ...])
emitter.listenerCount(type)
Class Method: EventEmitter.listenerCount(emitter, event)
Event: 'newListener'
Event: 'removeListener'
Inheriting from 'EventEmitter'
PS:我总觉得api里的’,’和’[‘的位置反了。。。
emit
事件的触发,与on搭配使用
emitter.emit(event, [arg1], [arg2], [...])
参数
- event:事件名 —– ‘event’
- arg1:参数1 —— ‘参数1’
- ……
不多说,直接来看下一个方法,我们搭配使用
on
触发的响应,与emit搭配使用。相当于安卓中的setOn***Listener
emitter.on(event, listener)
参数
- event:事件名 —– ‘event’
- listener:触发响应的具体执行
emit搭配on
var EventEmitter = require('events').EventEmitter
var life = new EventEmitter()
// 定义一个函数
function Hello(who){
console.log('hello ' + who)
}
life.on('welcome', function(who){
console.log('welcome ' + who)
})
life.on('hello', Hello)
life.emit('welcome', 'Bigflower')
life.emit('hello', 'Bigflower')
最后一句调用后,立即执行event==welcome的事件所对应的函数,很容易理解,看视频大家就懂了。
输出结果是:
welcome Bigflower
hello Bigflower
remove
即取消on中的Listener
removeListener
取消某个listener
life.removeListener('hello', Hello)
removeAllListener
取消一堆listener
life.removeAllListeners() // 取消所有的listener
life.removeAllListeners('welcome') // 取消事件为welcome的所有listener
EventEmitter.listenerCount
获得某个事件event的listener数量
console.log(EventEmitter.listenerCount(life, 'welcome'))
setMaxListeners(n)
设置某个事件监听器的最大值,默认是10个(太多了可能会:内存泄漏(oh,从安卓跑到nodejs,还是离不开这玩意儿))
相关文章
nodejs入门(一)URL与HTTP http://www.flowerfat.com/2015/10/15/nodejs%E5%85%A5%E9%97%A8%E4%B8%801015/
nodejs入门(二)Events
http://www.flowerfat.com/2015/10/16/nodejs%E5%85%A5%E9%97%A8%E4%BA%8C1016/