Created
April 18, 2022 15:25
-
-
Save arielivandiaz/59f9dc2b1d82c1013d1c5cc1e65111e7 to your computer and use it in GitHub Desktop.
JS-ES6 Cheatsheet Promises
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//Promise.all | |
//Devuelve todas las promesas o el primer reject que ocurra | |
//***********************************************************************************/ | |
const names = ["Victoria", "Ivan", "Katya", "Lina", "Jack"]; | |
//Promise declaration | |
const returnAfter1sec = (value) => { | |
return new Promise((resolve, reject) => { | |
setTimeout(() => { | |
resolve(value); | |
}, 1000); | |
}); | |
} | |
let promises = names.map((a) => returnAfter1sec(a)); //Array of promises | |
let data = Promise.all(promises); //Promise | |
//Resolve it with then | |
data.then((result) => { | |
console.log(result); | |
}).catch((err) => { | |
console.log(err); | |
}); | |
//Or | |
let result = await Promise.all(promises); | |
console.log(result); | |
//Promise.any | |
//Devuelve la promesa ganadoraa, ignora los reject | |
//***********************************************************************************/ | |
const returnAfterTime = (time, value) => { | |
return new Promise((resolve, reject) => { | |
setTimeout(() => { | |
resolve(value); | |
}, time * 1000); | |
}); | |
} | |
const rejectAfterTime = (time, value) => { | |
return new Promise((resolve, reject) => { | |
setTimeout(() => { | |
reject(new Error(value)); | |
}, time * 1000); | |
}); | |
} | |
let promises = []; | |
promises.push(returnAfterTime(1, "Promise 1")); | |
promises.push(returnAfterTime(0.5, "Promise 2")); | |
promises.push(rejectAfterTime(0.25, "Promise 3")); | |
promises.push(returnAfterTime(3, "Promise 4")); | |
promises.push(returnAfterTime(5, "Promise 5")); | |
let data = Promise.any(promises); | |
data.then((result,error) => { | |
error ? console.log(`Rejected with ${error}`) : console.log(`Fulfilled with ${result}`); | |
}).catch((err) => { | |
console.log(err); | |
}); | |
//Output : Fulfilled with Promise 2 | |
//Promise.race | |
//Devuelve la promesa que se resuelva o rejecte primero | |
//***********************************************************************************/ | |
const returnAfterTime = (time, value) => { | |
return new Promise((resolve, reject) => { | |
setTimeout(() => { | |
resolve(value); | |
}, time * 1000); | |
}); | |
} | |
const rejectAfterTime = (time, value) => { | |
return new Promise((resolve, reject) => { | |
setTimeout(() => { | |
reject(new Error(value)); | |
}, time * 1000); | |
}); | |
} | |
let promises = []; | |
promises.push(returnAfterTime(1, "Promise 1")); | |
promises.push(returnAfterTime(0.5, "Promise 2")); | |
promises.push(rejectAfterTime(0.25, "Promise 3")); | |
promises.push(returnAfterTime(3, "Promise 4")); | |
promises.push(returnAfterTime(5, "Promise 5")); | |
let data = Promise.race(promises); | |
data.then((result,error) => { | |
error ? console.log(`Rejected with ${error}`) : console.log(`Fulfilled with ${result}`); | |
}).catch((err) => { | |
console.log(err); | |
}); | |
//Output : Error: Promise 3 | |
//Promise.allSettled | |
//Devuelve todos los resultados ya sean resolved o rejected | |
//***********************************************************************************/ | |
const returnAfterTime = (time, value) => { | |
return new Promise((resolve, reject) => { | |
setTimeout(() => { | |
resolve(value); | |
}, time * 1000); | |
}); | |
} | |
const rejectAfterTime = (time, value) => { | |
return new Promise((resolve, reject) => { | |
setTimeout(() => { | |
reject(new Error(value)); | |
}, time * 1000); | |
}); | |
} | |
let promises = []; | |
promises.push(returnAfterTime(1, "Promise 1")); | |
promises.push(returnAfterTime(0.5, "Promise 2")); | |
promises.push(rejectAfterTime(0.25, "Promise 3")); | |
promises.push(returnAfterTime(3, "Promise 4")); | |
promises.push(returnAfterTime(5, "Promise 5")); | |
let data = Promise.allSettled(promises); | |
data.then((result) => { | |
result.map(p => p.reason ? | |
console.log(`Rejected with ${p.reason}`) : | |
console.log(`Fulfilled with ${p.value}`) | |
) | |
}).catch((err) => { | |
console.log(err); | |
}); | |
// El metodo async siempre retorna una promesa | |
// no necesitas hacer resolve si ya estas esperando una promesa | |
var fetch = require('request-promise'); | |
var url = 'https://jsonplaceholder.typicode.com/todos/1'; | |
const callAPI = async (time) => { | |
var html = await fetch(url); | |
return html; | |
} | |
const main = async () => { | |
var x = await callAPI(5); | |
console.log(x); | |
} | |
main(); | |
//Metodo Promise.prototype.finally | |
promise | |
.then(result => { | |
// process the result | |
}) | |
.catch(error => { | |
// handle the error | |
}) | |
.finally(() => { | |
// clean up the resources | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment