事件和函数之间的区别?

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() 等)中用于设置和执行回调的标识符。函数是可重用的代码。

我想我看到的最大区别是事件发射器可以触发多个正在侦听的事件,而仅调用一个函数只会触发一件事。

例如,您可以在游戏中有许多对象都在等待增加其动画的步骤事件。

虽然我宁愿只使用函数,但调试起来非常痛苦。