猿问

什么是事件循环?

什么是事件循环


青春有我
浏览 1147回答 2
2回答

呼啦一阵风

Node JS是单线程应用程序,但它通过事件和回调概念,支持并发。 由于NodeJS每一个API是异步的,作为一个单独的线程,它使用异步函数调用,以保持并发性。NodeJS使用观察者模式。Node线程保持一个事件循环,每当任何任务得到完成,它触发这标志着该事件侦听器函数执行相应的事件。事件驱动编程Node.js大量使用事件,这也是为何Node.js是相当快相对于其他类似的技术。当Node启动其服务器,它可以简单地启动它的变量,声明的函数,然后简单地等待发生的事件。在事件驱动的应用中,通常主循环监听事件,然后触发回调函数时被检测到这些事件之一。尽管事件似乎类似于回调。不同之处在于如下事实,当异步函数返回其结果的回调函数被调用的地方作为对观察者模式的事件处理。监听事件的功能作为观察员。每当一个事件被触发,它的监听函数就开始执行。Node.js具有多个内置通过事件模块和用于将事件绑定和事件侦听,如下EventEmitter类可用事件:// Import events modulevar events = require('events');// Create an eventEmitter objectvar eventEmitter = new events.EventEmitter();以下为事件处理程序绑定使用事件的语法:// Bind event and even handler as followseventEmitter.on('eventName', eventHandler);我们可以通过编程触发一个事件,如下所示:// Fire an eventeventEmitter.emit('eventName');例子创建一个名为具有以下代码main.js一个js文件:// Import events modulevar events = require('events');// Create an eventEmitter objectvar eventEmitter = new events.EventEmitter();// Create an event handler as followsvar connectHandler = function connected() {console.log('connection succesful.');// Fire the data_received eventeventEmitter.emit('data_received');}// Bind the connection event with the handlereventEmitter.on('connection', connectHandler);// Bind the data_received event with the anonymous functioneventEmitter.on('data_received', function(){console.log('data received succesfully.');});// Fire the connection eventeventEmitter.emit('connection');console.log("Program Ended.");现在让我们试着运行上面的程序作为检查的输出:$ mnode main.js这将产生以下结果:connection succesful.data received succesfully.Program Ended.
随时随地看视频慕课网APP
我要回答