diff --git a/PULL_REQUEST_TEMPLATE.md b/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..cb62c29 --- /dev/null +++ b/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,17 @@ +## DESCRIPTION + +Solución al reto 04 de Escuela de JavaScript + +Nombre: Alfonso Neil Jiménez Casallas +Usuario Platzi: @alfonsoneiljimenez + +## GRUPO +- [ X ] Martes +- [ ] Miercoles +- [ ] Jueves + +## Reto: + - [ X ] Primer problema + - [ X ] Segundo problema + - [ X ] Tercer problema + - [ X ] Cuarto Problema (Opcional) \ No newline at end of file diff --git "a/PULL_REQUEST_TEMPLATE.md\t" "b/PULL_REQUEST_TEMPLATE.md\t" deleted file mode 100644 index 9a4d861..0000000 --- "a/PULL_REQUEST_TEMPLATE.md\t" +++ /dev/null @@ -1,17 +0,0 @@ -## DESCRIPTION - -Solución al reto 04 de Escuela de JavaScript - -Nombre: -Usuario Platzi: - -## GRUPO -- [ ] Martes -- [ ] Miercoles -- [ ] Jueves - -## Reto: - - [ ] Primer problema - - [ ] Segundo problema - - [ ] Tercer problema - - [ ] Cuarto Problema (Opcional) \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..c90c067 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,13 @@ +{ + "name": "escuelajs-reto-04", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "xmlhttprequest": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", + "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=" + } + } +} diff --git a/package.json b/package.json index bf060d5..0abd8ad 100644 --- a/package.json +++ b/package.json @@ -20,5 +20,8 @@ "bugs": { "url": "https://github.com/platzi/escuelajs-reto-04/issues" }, - "homepage": "https://github.com/platzi/escuelajs-reto-04#readme" -} \ No newline at end of file + "homepage": "https://github.com/platzi/escuelajs-reto-04#readme", + "dependencies": { + "xmlhttprequest": "^1.8.0" + } +} diff --git a/src/index.js b/src/index.js index 4c965e7..a189b3e 100644 --- a/src/index.js +++ b/src/index.js @@ -1,9 +1,44 @@ +const XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest; + +const API = 'https://us-central1-escuelajs-api.cloudfunctions.net/orders'; +const xhttp = new XMLHttpRequest(); + + +const fetchOrders = (url_api) => { + xhttp.responseType = 'json'; + xhttp.open('GET', url_api, true); + xhttp.send(); + return new Promise((resolve, reject) => { + xhttp.onreadystatechange = (event) => { + if (xhttp.readyState === 4) { + if (xhttp.status == 200){ + const response = JSON.parse(xhttp.responseText); + resolve(response); + } + else reject(Error(`No fue posible entregar la petición desde ${url_api}`)); + } + } + }) +} + + +const randomTime = (min, max) => { + min = Math.ceil(min); + max = Math.floor(max); + return Math.floor(Math.random() * (max - min + 1) + min); //The maximum is inclusive and the minimum is inclusive +} + const orders = (time, product, table) => { console.log(`### Orden: ${product} para ${table}`); return new Promise((resolve, reject) => { - setTimeout(() => { - resolve(`=== Pedido servido: ${product}, tiempo de preparación ${time}ms para la ${table}`); - }, time); + try{ + setTimeout(() => { + resolve(`=== Pedido servido: ${product}, tiempo de preparación ${time}ms para la ${table}`); + }, time); + }catch(err){ + reject(Error(`Error durante la entrega del pedido: ${err}`)); + } + }); } @@ -16,9 +51,49 @@ const menu = { const table = ['Mesa 1', 'Mesa 2', 'Mesa 3', 'Mesa 4', 'Mesa 5']; const waiter = () => { - orders(6000, menu.hamburger, table[3]) + orders(randomTime(1000, 8000), menu.hamburger, table[3]) .then((res) => console.log(res)) .catch((err) => console.error(err)); }; +const waiter2 = () => { + orders(randomTime(1000, 8000), menu.hotdog, table[0]) + .then((res) => console.log(res)); + return orders(randomTime(1000, 8000), menu.pizza, table[2]) + .then((res) => console.log(res)) + .catch((err) => console.error(err)); +}; + +const waiter3 = async() => { + try{ + const order1 = await orders(randomTime(1000, 8000), menu.hotdog, table[1]) + console.log(order1) + const order2 = await orders(randomTime(1000, 8000), menu.pizza, table[1]) + console.log(order2) + const order3 = await orders(randomTime(1000, 8000), menu.hotdog, table[1]) + console.log(order3) + }catch(err){ + console.error(err) + } +}; + +const waiter4 = async() => { + try{ + const order1 = await fetchOrders(API) + console.log(`=== Pedido servido: ${order1.data}`) + const order2 = await fetchOrders(API) + console.log(`=== Pedido servido: ${order2.data}`) + const order3 = await fetchOrders(API) + console.log(`=== Pedido servido: ${order3.data}`) + const order4 = await fetchOrders(API) + console.log(`=== Pedido servido: ${order4.data}`) + }catch(err){ + console.log(`Error durante la entrega del pedido: ${err}`) + } +}; + + waiter(); +waiter2(); +waiter3(); +waiter4(); \ No newline at end of file