-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpromises.js
168 lines (127 loc) · 3.76 KB
/
promises.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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
/* ne primises es una funcion que resive un colback, en este colback promise va a inyectar
2 colbacks mas, la primera se llama resolve y la segunda reject */
// resolve se ejecuta si el codigo se ejecuta de forma adecuada si no va a ejecutar reject
const getData = () => {
return new Promise((resolve, reject) => {
})
}
/* tambien se podria de esta forma, recuerda qye las funciones expresivas como la flecha =>
llevan implicito el return */
const getData = () => new Promise((resolve, reject) => {
});
// asi se veria en una funcion
function getData() {
return new Promise((resolve, reject) => {
})
}
const getData = new Promise((resolve, reject) => {})
/* Las promesas tienen 2 formas de resolverse una de ellas es utilizando funciones de la promesa
que son then, catch. y la otra forma es utilizando asin awey que son palabras reservadas*/
// Funcion que retorna una promesa, se le puede pasar un parametro
const getData = (error) => new Promise((resolve, reject) => {
if (!error) {
resolve({
nombre: 'Gabriel',
Apellido: 'Arguello',
})
} else {
reject('No pudimos obtener los datos')
}
})
// getData2 es igual a una nueva promesa, no podemos pasarle un parametro dentro de la promesa.
const getData2 = new Promise((resolve, reject) => {
})
// Las promesas nos van Ayudar a trabajar con los procesos Asincronos
/* then - catch --> getData nos va a retornar una promesa y al retornar una promesa nos va
habilitar los metodos de esa promesa retornada, y entre esos metodos mediante la anotacion
.teh en caso de que se resuelva exitosamente .catch para que atrape algun error existente.
estos metodos van a resivir callbacks y apartir de ellos podemos trabajarlos */
getData(true)
.then((data) => {
console.log(data);
})
.catch((error) => {
console.log(error);
})
//---
const getData = (error) =>
new Promise((resolve, reject) => {
if (!error) {
setTimeout(()=> {
resolve({
nombre: 'Gabriel',
Apellido: 'Arguello',
});
}, 3000);
} else {
reject('No pudimos obtener los datos');
}
});
const getData2 = (error) =>
new Promise((resolve, reject) => {
if (!error) {
setTimeout(()=> {
resolve({
nombre: 'Juanda',
Apellido: 'Arguello',
});
}, 3000);
}else {
reject('No pudimos obtener los datos de data 2');
}
});
/* Tambien podemos encadenas promesas, solo es nesesario hacer un .catch ya que si ocurre
un error en cualquiera de los then se va a ejecutar el catch */
console.log('Inicio');
getData(false)
.then((data) => {
console.log(data);
return getData2(true)
})
.then((data) => {
console.log(data);
})
.catch((error) => {
console.log(error);
})
console.log('Fin');
// async - await se implemento para dar solucion al then - cash
/* con async await bamos a resolver promesas unicamente con palabras reservadas, para que
funciona aweit debe existir async, async debe estar antes de la funcion */
const getData = (error) =>
new Promise((resolve, reject) => {
if (!error) {
setTimeout(()=> {
resolve({
nombre: 'Gabriel',
Apellido: 'Arguello',
});
}, 3000);
} else {
reject('No pudimos obtener los datos');
}
});
const getData2 = (error) =>
new Promise((resolve, reject) => {
if (!error) {
setTimeout(()=> {
resolve({
nombre: 'Juanda',
Apellido: 'Arguello',
});
}, 3000);
}else {
reject('No pudimos obtener los datos de data 2');
}
});
const main = async () => {
try {
let resultado = await getData(false);
let resultado2 = await getData2(true);
console.log(resultado);
console.log(resultado2);
} catch(error) {
console.log(error);
}
};
main();