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..5cf6291 100644 --- a/src/index.js +++ b/src/index.js @@ -1,24 +1,106 @@ -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); - }); -} - -const menu = { - hamburger: 'Combo Hamburguesa', - hotdog: 'Combo Hot Dogs', - pizza: 'Combo Pizza', -}; - -const table = ['Mesa 1', 'Mesa 2', 'Mesa 3', 'Mesa 4', 'Mesa 5']; - -const waiter = () => { - orders(6000, menu.hamburger, table[3]) - .then((res) => console.log(res)) - .catch((err) => console.error(err)); -}; - -waiter(); + + let XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest; + const API = 'https://us-central1-escuelajs-api.cloudfunctions.net/orders/'; + fetchOrders=(url_api)=>{ + return new Promise((resolve, reject)=>{ + let xhttp= new XMLHttpRequest(); + xhttp.open('GET', url_api, true) + xhttp.onreadystatechange= function (event){ + if(xhttp.readyState===4){ + (xhttp.status===200) + ? resolve(JSON.parse(xhttp.responseText)) + :reject(new Error('Error', url_api)) + } + }; + + xhttp.send(); + }); + + } + //### Primer problema + const min = 1000; + const max = 8000; + const randomTime = () => { + return Math.round(Math.random() * (max - min)) + min; + + } + const orders = (time, product, table) => { + console.log(`### Orden: ${product} para ${table}`); + return new Promise((resolve, reject)=>{ + setTimeout(()=>{ + if(randomTime(max, min) <= time){ + resolve(`=== Pedido servido: ${product}, tiempo de preparación ${time}ms para la ${table}`); + } else { + reject(new Error(Error)); + } + + }, time); + }); + } + + const menu = { + hamburger: 'Combo Hamburguesa', + hotdog: 'Combo Hot Dogs', + pizza: 'Combo Pizza', + }; + + const table = ['Mesa 1', 'Mesa 2', 'Mesa 3', 'Mesa 4', 'Mesa 5']; + + + const waiter = () => { + orders(6000, menu.hamburger, table[3]) + .then((res) => console.log(res)) + .catch((err) => console.error(err)); + } + + //### Segundo Problema + 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.hotdog, table[1]) + + console.log(order1) + console.log(order2) + console.log(order3) + + } catch (error) { + console.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(`pedido1: ${order1.data}`) + console.log(`pedido2: ${order2.data}`) + console.log(`pedido3: ${order3.data}`) + console.log(`pedido4: ${order4.data}`) + + } catch(error){ + console.error(error) + } + }; + + + waiter() + waiter2() + waiter3() + waiter4(API) \ No newline at end of file