w3resource

JavaScript: Convert an asynchronous function to return a promise

JavaScript fundamental (ES6 Syntax): Exercise-162 with Solution

Write a JavaScript program to convert an asynchronous function to return a promise.

  • Use currying to return a function returning a Promise that calls the original function.
  • Use the rest operator (...) to pass in all the parameters.
  • Note: In Node 8+, you can use util.promisify.

Sample Solution:

JavaScript Code:

//#Source https://bit.ly/2neWfJ2 
// Define a function 'promisify' to convert a callback-based function into a promise-based function
const promisify = func => (...args) =>
  // Return a new promise
  new Promise((resolve, reject) =>
    // Call the original function with provided arguments and a callback function
    func(...args, (err, result) => (err ? reject(err) : resolve(result)))
  );

// Define a callback-based function 'delay' that waits for a specified duration before invoking the callback
const delay = promisify((d, cb) => setTimeout(cb, d));
// Call 'delay' function with a delay of 2000 milliseconds and then log 'Hi!' when the promise resolves
delay(2000).then(() => console.log('Hi!')); // Promise resolves after 2s

Output:

Hi!

Flowchart:

flowchart: Convert an asynchronous function to return a promise

Live Demo:

See the Pen javascript-basic-exercise-162 by w3resource (@w3resource) on CodePen.


Improve this sample solution and post your code through Disqus

Previous: Write a JavaScript program to mutate the original array to filter out the values specified. Returns the removed elements.
Next: Write a JavaScript program to convert a number in bytes to a human-readable string.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Become a Patron!

Follow us on Facebook and Twitter for latest update.

It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.

https://w3resource.com/javascript-exercises/fundamental/javascript-fundamental-exercise-162.php