Difference between Events and Functions?

时光怂恿深爱的人放手 提交于 2019-11-30 17:16:00

问题


I am new to Node, and I am struggling to understand the main difference between Events and Functions. Both need to be triggered, so why do we need an Event at all if we have to trigger it anyway?

How is it different than having a Function triggered?

Example code:

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.');

We can achieve the same result by functions, right?

I am sure this has some serious importance in Node (otherwise it would not exist, lol), but I am struggling to understand it.

Help appreciated! :)


回答1:


Events deal with asynchronous operations. They aren't really related to functions in the sense that they are interchangeable.

eventEmitter.on is itself a function, it takes two arguments the event name, then a function (callback) to be executed when the event happens.

eventEmitter.on(evt, callback)

There is no way to tell WHEN the event will be emitted, so you provide a callback to be executed when the event occurs.

In your examples, you are controlling when the events are triggered, which is different than real world use where you may have a server listening for connections that could connect at anytime.

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
}

For server.listen the server doesn't start immediately, once its ready the callback is called

server.on('connection') listens for client connections, they can come at any time. The event is then triggered when a connection occurs, causing the callback to be run.

Then there is doSomethingWithClient this is just a function with a set of synchronous operations to be done when a client connection occurs.




回答2:


An event is an identifier used within tools (.on(), .emit() etc) to set and execute callbacks. Functions are reusable code.



来源:https://stackoverflow.com/questions/35395342/difference-between-events-and-functions

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!