Replacing Callbacks with Promises

Here is the code which exhibits the callback pattern for dialing with async work:

function getUser(id, callback) { console.log("Reading a user from a database..."); setTimeout(() => { console.log("Received user data..."); callback({ "ID": id, "Account number": "58721094531267" }); }, 2000); } console.log("listening for events"); getUser(1, (user) => console.log(user)); console.log("still listening for events!");

We are going to replace the callback pattern with the Promise pattern. As a first step, we must update our async function getUser to return a Promise.

function getUser(id) { console.log(`Reading a user from a database!`); const promise = new Promise((resolve, reject) => { const success = true; setTimeout(() => { if (success) { console.log(`Recieved user data!`); resolve({ "ID": id, "Account number": "58721094531267" }); } else { reject(new Error("Could not read the user data!")); } }, 2000); }) return promise; }

Exercise Update how getUser is employed. (Hint: you must consume a Promise).


Solution
console.log("listening for events!"); getUser(1) .then(user => console.log(user)) .catch(err => console.log(err.message)); console.log("still listening for events!");