nodejs入门二

相关

说点啥

上次提到了 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/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值