事件和函数之间的区别?
Difference between Events and Functions?
我是 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.');
我们可以通过函数实现相同的结果,对吗?
我确信这在 Node 中非常重要(否则它不会存在,哈哈),但我很难理解它。
感谢帮助! :)
事件处理异步操作。从可以互换的意义上说,它们与功能并没有真正的关系。
eventEmitter.on
本身就是一个函数,它有两个参数事件名称,然后是事件发生时要执行的函数(回调)。
eventEmitter.on(evt, callback)
无法确定何时会发出事件,因此您提供了一个在事件发生时执行的回调。
在您的示例中,您控制着何时触发事件,这与现实世界的使用不同,在现实世界中您可能让服务器侦听可以随时连接的连接。
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
}
对于server.listen
,服务器不会立即启动,一旦准备就绪就会调用回调
server.on('connection')
监听客户端连接,他们可以随时来。然后在连接发生时触发该事件,导致回调为运行.
然后就是doSomethingWithClient
这只是一个函数,当客户端连接发生时,要完成一组同步操作。
事件是工具(.on()
、.emit()
等)中用于设置和执行回调的标识符。函数是可重用的代码。
我想我看到的最大区别是事件发射器可以触发多个正在侦听的事件,而仅调用一个函数只会触发一件事。
例如,您可以在游戏中有许多对象都在等待增加其动画的步骤事件。
虽然我宁愿只使用函数,但调试起来非常痛苦。
我是 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.');
我们可以通过函数实现相同的结果,对吗?
我确信这在 Node 中非常重要(否则它不会存在,哈哈),但我很难理解它。
感谢帮助! :)
事件处理异步操作。从可以互换的意义上说,它们与功能并没有真正的关系。
eventEmitter.on
本身就是一个函数,它有两个参数事件名称,然后是事件发生时要执行的函数(回调)。
eventEmitter.on(evt, callback)
无法确定何时会发出事件,因此您提供了一个在事件发生时执行的回调。
在您的示例中,您控制着何时触发事件,这与现实世界的使用不同,在现实世界中您可能让服务器侦听可以随时连接的连接。
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
}
对于server.listen
,服务器不会立即启动,一旦准备就绪就会调用回调
server.on('connection')
监听客户端连接,他们可以随时来。然后在连接发生时触发该事件,导致回调为运行.
然后就是doSomethingWithClient
这只是一个函数,当客户端连接发生时,要完成一组同步操作。
事件是工具(.on()
、.emit()
等)中用于设置和执行回调的标识符。函数是可重用的代码。
我想我看到的最大区别是事件发射器可以触发多个正在侦听的事件,而仅调用一个函数只会触发一件事。
例如,您可以在游戏中有许多对象都在等待增加其动画的步骤事件。
虽然我宁愿只使用函数,但调试起来非常痛苦。