-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpromesas.js
55 lines (50 loc) · 1.74 KB
/
promesas.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
// red promesas
// las promesas son objetos que reciben 2 argumentos, uno que verifica
// si se ha resuelto la promesa y otro para cuando se rechaza la promesa
const empleados = [
{ id: 1, nombre: "Jean" },
{ id: 2, nombre: "Armin" },
{ id: 3, nombre: "Connie" },
];
let salarios = [
{ id: 1, salario: 800 },
{ id: 2, salario: 900 },
];
const getEmpleado = (id) => {
//la función getEmpleado devuelve una promesa
return new Promise((resolve, reject) => {
const empleadoDB = empleados.find((empleado) => empleado.id === id);
if (!empleadoDB) {
// En caso de no encontrarse el empleado la promesa se rechaza y devuelve un mensaje
reject(`No existe un empleado con id ${id}`);
} else {
// En caso de encontrarse el empleado la promesa se resulve y devuelve un objeto empleado
resolve(empleadoDB);
}
});
};
const getSalario = (empleado) => {
return new Promise((resolve, reject) => {
const salarioDB = salarios.find((salario) => salario.id === empleado.id);
if (!salarioDB) {
//Si el empleado no tiene salario se rechaza la promesa y devuelve un mensaje
reject(`No se encontró salario para el empleado ${empleado.nombre}`);
} else {
//Si el empleado tiene salario se resuelve la promesa y devuelve un objeto{nombre,salario}
resolve({ nombre: empleado.nombre, salario: salarioDB.salario });
}
});
};
getEmpleado(3)
.then((empleado) => {
// llama a la funcion y devuelve el resolve de la promesa
return getSalario(empleado);
})
.then((response) => {
console.log(`${response.nombre} es de ${response.salario}`);
})
.catch((err) => {
// el catch funciona para capturar los errores, en este caso
// los reject de las promesas
console.error(err);
});