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)getDatos
es una función que regresa una promesa.datos
tiene elementos entonces la promesa se satisface después de 2000 ms (el parámetro de tiempo desetTimeout
ejecuta operaciones sin ningún problema)datos
no tiene elementos entonces la promesa es rechazada y lanzamos el error.Al momento de consumir la promesa:
datos
si tiene elementos elcatch
nunca llega a ejecutarse en este ejemplo.map
para solo ocupar las llaves deedad
dedata
y también unfilter
para mostrar solo las edades mayores a25
.finally
se ejecuta siempre, independientemente si la promesa fue satisfactoria o rechazada.