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..892a909 100644 --- a/src/index.js +++ b/src/index.js @@ -1,9 +1,38 @@ +const XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest; +const API = "https://us-central1-escuelajs-api.cloudfunctions.net/orders"; +const xhttp = new XMLHttpRequest(); + +const statusCompleted = 4 +const statusSuccessful = 200 + +const fetchOrders = url_api => { + return new Promise((resolve, reject) => { + try { + xhttp.open('GET', url_api, false) + xhttp.onreadystatechange = (event) => { + if(xhttp.readyState === statusCompleted) { + if(xhttp.status === statusSuccessful) { + resolve(JSON.parse(xhttp.responseText)) + } + } + } + } catch (error) { + reject(`Ha ocurrido un Error ${error}`) + } + xhttp.send(); + }) + } + 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 (error) { + reject(`Ha ocurrido un Error ${error}`) + } }); } @@ -15,10 +44,70 @@ const menu = { const table = ['Mesa 1', 'Mesa 2', 'Mesa 3', 'Mesa 4', 'Mesa 5']; +const randomTime = () => { + const timeMin = 1000 + const timeMax = 8000 + + const numAleatorio = Math.floor(Math.random() * (timeMax - timeMin)) + timeMin; + return numAleatorio +} + const waiter = () => { orders(6000, menu.hamburger, table[3]) .then((res) => console.log(res)) .catch((err) => console.error(err)); }; +const waiter2 = () => { + orders(randomTime(), menu.hotdog, table[0]) + .then((res) => { + console.log(res) + return orders(randomTime(), menu.pizza, table[2]) + }) + .then((res) => console.log(res)) + .catch((err) => console.error(err)); +}; + +const waiter3 = async () => { + try { + const order1 = await orders(randomTime(), menu.hotdog, table[1]) + const order2 = await orders(randomTime(), menu.pizza, table[1]) + const order3 = await orders(randomTime(), menu.hamburger, table[1]) + console.log(order1) + console.log(order2) + console.log(order3) + + } catch (error) { + console.log(`Ha ocurrido un Error ${error}`) + } +}; + +const waiter4 = async () => { + try { + console.log('Solicitando Pedidos...') + const order1 = await fetchOrders(API) + const order2 = await fetchOrders(API) + const order3 = await fetchOrders(API) + const order4 = await fetchOrders(API) + + console.log(`=== Pedido servido: ${order1.data}`) + console.log(`=== Pedido servido: ${order2.data}`) + console.log(`=== Pedido servido: ${order3.data}`) + console.log(`=== Pedido servido: ${order4.data}`) + + } catch (error) { + console.log(`Ha ocurrido un Error ${error}`) + } +}; + +//Primer Problema waiter(); + +//Segundo Problema +waiter2(); + +//Tercer Problema +waiter3(); + +//Cuarto Problema - API +waiter4();