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:
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.
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
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics