Guest User

Untitled

a guest
Aug 20th, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.77 KB | None | 0 0
  1. const asyncMap = (array, fn, callback) => {
  2. let sqArray = [];
  3. array.map((number, index) => {
  4. sqArray.push(
  5. new Promise((resolve, reject) => {
  6. fn(number, (error, sqNum) => {
  7. if (!error) {
  8. resolve(sqNum);
  9. }
  10. });
  11. })
  12. );
  13. });
  14. Promise.all(sqArray).then(response => {
  15. callback(null, response);
  16. });
  17. };
  18.  
  19. asyncMap(
  20. [1, 2, 3, 4],
  21. (number, callback) => {
  22. setTimeout(() => {
  23. if (typeof number !== "number") {
  24. callback(new Error(`Not a number: ${number}`));
  25. return;
  26. }
  27.  
  28. callback(null, number * number);
  29. }, Math.floor(Math.random() * 100));
  30. },
  31. (error, result) => {
  32. if (error) {
  33. throw error;
  34. }
  35.  
  36. // Should print [ 1, 4, 9, 16 ]
  37. console.log(result);
  38. }
  39. );
Add Comment
Please, Sign In to add comment