Welcome to the Linux Foundation Forum!

Correct solution for LFW211 Labs 9.2?

Options

Hello,

I'm going through the Linux Foundation / OpenJS course for certification, Node.JS Applications. I'm on Chapter 9, and doing the Labs Exercise 9.2 (labs-2). Here is the code with which I'm presented —

'use strict'

const { EventEmitter } = require('events')

process.nextTick(console.log, 'passed!')

const ee = new EventEmitter()

ee.emit('error',Error('timeout'))

The exercise then says to...:

Currently the process crashes... Without removing any of the existing code, and without using a try/catch block add some code which stops the process from crashing. When implemented correctly the process should out put passed!.

So here's my solution —

'use strict'
const { EventEmitter } = require('events')

const ee = new EventEmitter()

ee.on('error', () => process.nextTick(console.log, 'passed!'))

ee.emit('error', Error('timeout'))

This works, when I run node index.js, I do get the desired result —

Here's my question — is this a correct solution? I don't use a setTimeout(), either the regular one from JavaScript or the "Promisfied" one from Node.JS, I used an ee.on('error', ...). The exercise also says to do this,...

Without removing any of the existing code, and without using a try/catch block...

I didn't re-write any code, but I did wrap the process.nextTick() line in the ee.on('error', ...) and moved it down below the ee declaration so it would work. Is that correct? Please let me know.

best,

faddah

Answers

  • abraham.m.joseph
    Options

    This works. You can also just add
    ee.on('error', () => {});
    just before ee.emit in the original code. (just an empty handler is enough)

  • xdxmxc
    xdxmxc Posts: 148
    Options

    @faddah that would be rewriting the code - as @abraham.m.joseph says, attach an error handler

  • ailequal
    ailequal Posts: 1
    Options

    I was also having some doubts when doing this exercise, mainly because the solution that @abraham.m.joseph suggested needs to add the code before the ee.emit() part, which someone might consider as modifying the original code, but I am glad to see that it's the correct way in the end.

Categories

Upcoming Training