NodeJS:事件和函数之间的区别?

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中有一些重要的意义(否则它不会存在,哈哈),但我很难理解它.

帮助赞赏!:)

Gab*_*s00 7

事件处理异步操作.它们与功能无关,因为它们是可互换的.

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这只是一个函数,在发生客户端连接时要执行一组同步操作.

  • 我也在尝试理解这一点。好的,对于代码中的示例: `server.on('connection', function(client){ console.log('New client connect'); doSomethingWithClient(client); });` 但要执行此代码有些需要调用`event.emit('connection', client)`对吗?调用函数:`function connection(client){...}` 有什么区别? (2认同)