JavaScript: Convert an asynchronous function to return a promise
JavaScript fundamental (ES6 Syntax): Exercise-162 with Solution
Async to Promise Conversion
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](https://www.w3resource.com/w3r_images/javascript-basic-exercise-flowchart-162-1.png)
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.
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics