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 
const promisify = func => (...args) =>
  new Promise((resolve, reject) =>
    func(...args, (err, result) => (err ? reject(err) : resolve(result)))
const delay = promisify((d, cb) => setTimeout(cb, d));
delay(2000).then(() => console.log('Hi!')); // // Promise resolves after 2s

Sample Output:



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.

JavaScript: Tips of the Day

How to check whether a string contains a substring in JavaScript?

ECMAScript 6 introduced String.prototype.includes:

const string = "foo";
const substring = "oo";


includes doesn't have Internet Explorer support, though. In ECMAScript 5 or older environments, use String.prototype.indexOf, which returns -1 when a substring cannot be found:

var string = "foo";
var substring = "oo";

console.log(string.indexOf(substring) !== -1);

Ref: https://bit.ly/3fFFgZv