node事件及解决雪崩问题

前端之家收集整理的这篇文章主要介绍了node事件及解决雪崩问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

node的events模块只提供了一个EventEmitter对象,它代理的全部的事件注册、监听、删除、触发的方法

var events = new require('events')
var event = new events.EventEmitter()
event.on('connect',function(cd) {
    console.log(cd)
})
event.emit('connect')

所谓雪崩问题就是在高访问量,大并发的情况下,缓存失效,大量的查询请求涌入数据库,如果访问量巨大,同一条sql会被反复查询,造成查询缓慢,进而影响整个网站的响应速度。
我们可以通过evnet的once事件来解决雪崩问题

var events = new require('events')
var event = new events.EventEmitter()
var ready = 'ready'
async function select(callback) {
    event.once('select',callback)
    if (ready === 'ready'){
        ready = 'pending'
        var result = await db.select(sql)
        event.emit('select',result)
        ready = 'ready'
    }
}

猜你在找的程序笔记相关文章