Explica este código JavaScript
Dificultad: Avanzado
const datos = [
{
id:1,
nombre:"Ana",
edad:25
},
{
id: 2,
nombre: "Cris",
edad: 26
},
];
const getDatos = () => {
return new Promise((resolve, reject) => {
if(datos.length > 0){
setTimeout(() => {
resolve(datos)
},3000-1000)
}else{
reject(new Error("Algo ocurrio mal"))
}
})
}
getDatos()
.then((datos) => console.log(datos.filter((item) => item.edad > 25)
.map((item) => item.edad)))
.catch((error) => console.log(error.message))
.finally(() => console.log("FIN"))
A. "Algo ocurrio mal", FIN (después de 3000 ms)
B. [], FIN (después de 2000 ms)
C. [26], FIN (después de 2000 ms)
D. Promise { <pending> } (después de 0 ms)
Respuesta en el primer comentario.
Top comments (1)
Respuesta:
C.
[26],FIN(después de 2000 ms)getDatoses una función que regresa una promesa.datostiene elementos entonces la promesa se satisface después de 2000 ms (el parámetro de tiempo desetTimeoutejecuta operaciones sin ningún problema)datosno tiene elementos entonces la promesa es rechazada y lanzamos el error.Al momento de consumir la promesa:
datossi tiene elementos elcatchnunca llega a ejecutarse en este ejemplo.mappara solo ocupar las llaves deedaddedatay también unfilterpara mostrar solo las edades mayores a25.finallyse ejecuta siempre, independientemente si la promesa fue satisfactoria o rechazada.