Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const asyncMap = (array, fn, callback) => {
- let sqArray = [];
- array.map((number, index) => {
- sqArray.push(
- new Promise((resolve, reject) => {
- fn(number, (error, sqNum) => {
- if (!error) {
- resolve(sqNum);
- }
- });
- })
- );
- });
- Promise.all(sqArray).then(response => {
- callback(null, response);
- });
- };
- asyncMap(
- [1, 2, 3, 4],
- (number, callback) => {
- setTimeout(() => {
- if (typeof number !== "number") {
- callback(new Error(`Not a number: ${number}`));
- return;
- }
- callback(null, number * number);
- }, Math.floor(Math.random() * 100));
- },
- (error, result) => {
- if (error) {
- throw error;
- }
- // Should print [ 1, 4, 9, 16 ]
- console.log(result);
- }
- );
Add Comment
Please, Sign In to add comment