Skip to content

Commit ce69adb

Browse files
authored
Merge pull request mouredev#6763 from victor-Casta/[email protected]
#21 - JavaScript
2 parents b34bd78 + 9638a85 commit ce69adb

File tree

1 file changed

+87
-0
lines changed

1 file changed

+87
-0
lines changed
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
/*
2+
* EJERCICIO:
3+
* Explora el concepto de callback en tu lenguaje creando un ejemplo
4+
* simple (a tu elección) que muestre su funcionamiento.
5+
*/
6+
7+
//Ejemplo 1
8+
function updatelist(list, callback) {
9+
list.push(7)
10+
callback()
11+
}
12+
13+
const MyList = [1, 2, 3, 4, 5, 6]
14+
15+
updatelist(MyList, function () {
16+
console.log(MyList)
17+
})
18+
19+
// Ejemplo 2
20+
function getDataToUrl(callback) {
21+
fetch('https:api.escuelajs.co/api/v1/products')
22+
.then(response => response.json())
23+
.then(data => {
24+
let contentURL = data
25+
callback(contentURL)
26+
})
27+
.catch(error => console.error('Error:', error))
28+
}
29+
30+
getDataToUrl((content) => {
31+
console.log(content)
32+
})
33+
34+
// Ejemplo 3
35+
function multiply(a, b, callback) {
36+
setTimeout(() => {
37+
let result = a * b
38+
callback(result)
39+
}, 4000)
40+
}
41+
42+
multiply(3, 4, (result) => {
43+
console.log(result)
44+
})
45+
46+
/*
47+
* DIFICULTAD EXTRA (opcional):
48+
* Crea un simulador de pedidos de un restaurante utilizando callbacks.
49+
* Estará formado por una función que procesa pedidos.
50+
* Debe aceptar el nombre del plato, una callback de confirmación, una
51+
* de listo y otra de entrega.
52+
* - Debe imprimir un confirmación cuando empiece el procesamiento.
53+
* - Debe simular un tiempo aleatorio entre 1 a 10 segundos entre
54+
* procesos.
55+
* - Debe invocar a cada callback siguiendo un orden de procesado.
56+
* - Debe notificar que el plato está listo o ha sido entregado.
57+
*/
58+
59+
function getRandomArbitrary(min, max) {
60+
let number = Math.random() * (max - min) + min
61+
return Math.round(number)
62+
}
63+
64+
function orderProcess(orderName, checkCallback, readyCallback, deliveredCallback) {
65+
checkCallback(orderName)
66+
setTimeout(() => {
67+
readyCallback(orderName)
68+
setTimeout(() => {
69+
deliveredCallback(orderName)
70+
}, getRandomArbitrary(1000, 10000))
71+
}, getRandomArbitrary(1000, 10000))
72+
}
73+
74+
function checkOrder(orderName) {
75+
console.log(`Su pedido ${orderName} ha sido confirmado`)
76+
}
77+
78+
function readyOrder(orderName) {
79+
console.log(`Su pedido ${orderName} está listo`)
80+
}
81+
82+
function deliveredOrder(orderName) {
83+
console.log(`Su pedido ${orderName} ha sido entregado`)
84+
}
85+
86+
orderProcess('Hamburguesa sencilla', checkOrder, readyOrder, deliveredOrder)
87+

0 commit comments

Comments
 (0)