Skip to content

Instantly share code, notes, and snippets.

@arielivandiaz
Created April 18, 2022 15:25
Show Gist options
  • Save arielivandiaz/59f9dc2b1d82c1013d1c5cc1e65111e7 to your computer and use it in GitHub Desktop.
Save arielivandiaz/59f9dc2b1d82c1013d1c5cc1e65111e7 to your computer and use it in GitHub Desktop.
JS-ES6 Cheatsheet Promises
//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