There are currently no frequently asked questions associated with this exercise – that’s where you come in! You can contribute to this section by offering your own questions, answers, or clarifications on this exercise. Ask or answer a question by clicking reply () below.
If you’ve had an “aha” moment about the concepts, formatting, syntax, or anything else with this exercise, consider sharing those insights! Teaching others and answering their questions is one of the best ways to learn and stay sharp.
Join the Discussion. Help a fellow learner on their journey.
Ask or answer a question about this exercise by clicking reply () below!
You can also find further discussion and get answers to your questions over in #get-help.
Agree with a comment or answer? Like () to up-vote the contribution!
I think you’re right, it should be console.log(The ${trail.nickname} is ${trail.miles} miles long!) since the mi and nickname variables were only defined in the callback function that we’re trying to replace.
Besides, it’s not possible to pass this checkpoint using the variables.
This lesson somewhat confused me as to how the final code should look like if we make use of the promisify method. Are the initial function declaration getTrailDistance() (written as it is), the callback function and the promisified function suppose to cohabit together on the same file? Since we need to write const getTrailDistancePromise = util.promisify(getTrailDistance), I’m guessing we do need the initial getTrailDistance() to remain unchanged, but if I try to remove the callback function, I obviously get a reference error because we use callback in getTrailDistance() which is not defined anymore.
I assume that the aim is to only have the promisified function in the file and get rid of the old code, but I don’t see how to do that without getting reference errors. And the getTrailDistance() is referring to the callback which becomes obsolete when we decide to convert the callback to a promisified function, so why would we want to keep the code inside getTrailDistance() as it is?
I figured it out!!!
The instructions were not clear at all.
I had to refer to my notes on Promises from the Intermediate Javascript course.
Basically, the key thing to understand is that nickname and mi are keys inside of the resolved value of the Promise getTrailDistancePromise (which you created in the exercise). Also, mi isn’t really the key, it’s actually called miles.
In order to access this data (the resolved value of the Promise), you have to pass it in to the .then() as a function. This is in the form of .then((resolvedValue) => console.log(resolvedValue));. If you run that line of code, it will print out for you the full data. From there, you can construct the console.log() statement the exercise is asking you to.
This is the correct answer below. Note that you can rename x using any variable name. It basically refers to the resolved value of the promise, and simply passes it along to the success handler function nested inside of .then(). (This is explained in the Intermediate Javascript course).
getTrailDistancePromise('North Country').then((x) => console.log(`The ${x.nickname} is ${x.miles} miles long!`)).catch();
I do not understand how to create a new post, so I put my question as a reply… could somebody explain me which is the advantage of promisify the function? It was working without it. It seems just that we are adding extra useless lines of code. I am super lost with this promise thingy :S
I have just completed this exercise too, and while I understand how the promisfy simplifies the code I cannot figure out how to get it to work by removing the old callback() function. I can remove the function completely, but if I then go to remove the callback(null, foundTrail) or and transform the callback(new Error(‘Trail not found!’)) from the getTrailDistance function the program does not output anything (but also does not display any error messages).
Fairly poorly written excercise considering how much of a mental effort understanding promises vs call back functions can be.
Any moderators / codecademy staff able to clarify here how we can remove the redundant callback function so it is just the promisfy?
I struggled with this exercise, and the hint for step 4, “Use the example in the narrative if you’re unsure about the syntax.” is not any help since the narrative example doesn’t involve using an object as the argument for the .then. Explaining that in the hint would be a lot more useful versus looking at the solution. I’m curious whether this is the best place to make this comment or whether it should be addressed as a bug? Also curious whether Codecademy responds to this type of comment here or in bug reports?
It’s a poor excercise imo (well step 4 specifically). Surely better practice would be to encourage re-writing the initial functions to incorporate modern promise syntax (async/await) or (new Promise resolve/reject). Feel i’ve wasted my time on this because it doesn’t appear to save on any code reduction either
Hi, i don’t understand the use of “if (trails.hasOwnProperty(trail))” line 8 because when i look into the trails.js files there is no property called trail, and without .hasOwnProperty(trail) the function is still good