Ari*_*ger 5 javascript event-handling node.js dom-events iojs
我是Node的新手,我正在努力理解事件和函数之间的主要区别.两者都需要被触发,所以如果我们不得不触发它,为什么我们需要一个事件呢?
与触发功能有什么不同?
示例代码:
var events = require('events');
var eventEmitter = new events.EventEmitter();
eventEmitter.on('event1', function () {
console.log('Event 1 executed.');
eventEmitter.emit('event2');
});
eventEmitter.on('event2', function() {
console.log('Event 2 executed.');
});
eventEmitter.emit('event1');
console.log('Program Ended.');
Run Code Online (Sandbox Code Playgroud)
我们可以通过函数实现相同的结果,对吧?
我确信这在Node中有一些重要的意义(否则它不会存在,哈哈),但我很难理解它.
帮助赞赏!:)
事件处理异步操作.它们与功能无关,因为它们是可互换的.
eventEmitter.on 它本身就是一个函数,它接受事件名称的两个参数,然后是事件发生时要执行的函数(回调).
eventEmitter.on(evt, callback)
没有办法告诉WHEN事件将被发出,因此您提供了一个在事件发生时执行的回调.
在您的示例中,您控制事件何时被触发,这与实际使用情况不同,您可以让服务器监听可以随时连接的连接.
server.listen('9000', function(){
console.log('Server started');
});
server.on('connection', function(client){
console.log('New client connected');
doSomethingWithClient(client);
});
//series of synchronous events
function doSomethingWithClient(client){
//something with client
}
Run Code Online (Sandbox Code Playgroud)
因为server.listen服务器没有立即启动,一旦准备好调用回调
server.on('connection')听取客户连接,他们可以随时来.然后在发生连接时触发事件,从而导致回调运行.
然后,doSomethingWithClient这只是一个函数,在发生客户端连接时要执行一组同步操作.