diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..3e0c98a --- /dev/null +++ b/package-lock.json @@ -0,0 +1,21 @@ +{ + "name": "escuelajs-reto-04", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "cross-fetch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.0.5.tgz", + "integrity": "sha512-FFLcLtraisj5eteosnX1gf01qYDCOc4fDy0+euOt8Kn9YBY2NtXL/pCoYPavw24NIQkQqm5ZOLsGD5Zzj0gyew==", + "requires": { + "node-fetch": "2.6.0" + } + }, + "node-fetch": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" + } + } +} diff --git a/package.json b/package.json index bf060d5..92318bb 100644 --- a/package.json +++ b/package.json @@ -20,5 +20,9 @@ "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": { + "cross-fetch": "^3.0.5", + "node-fetch": "^2.6.0" + } +} diff --git a/src/index.js b/src/index.js index 4c965e7..ff1ab74 100644 --- a/src/index.js +++ b/src/index.js @@ -1,10 +1,31 @@ +const fetch = require("node-fetch"); +const API = 'https://us-central1-escuelajs-api.cloudfunctions.net/orders/'; + + 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); + true + ? setTimeout(() => { + resolve(`=== Pedido servido: ${product}, tiempo de preparación ${time}ms para la ${table}`); + }, time) + : reject () }); +}; + +const fetchOrders = async (apiUrl) => { + try { + const request = await fetch(apiUrl, { method: 'GET' }); + const data = await request.json(); + console.log(`### Orden: ${data.data}`); + return new Promise((resolve, reject) => { + true + ? resolve(`=== Pedido servido: ${data.data}`) + : reject('Al parecer no salio algo bien con la orden'); + }); + } catch (err) { + return console.error(err); + } } const menu = { @@ -15,10 +36,60 @@ const menu = { const table = ['Mesa 1', 'Mesa 2', 'Mesa 3', 'Mesa 4', 'Mesa 5']; +var randomTime = () => { + return Math.floor(Math.random() * 8000) + 1000; +} + const waiter = () => { - orders(6000, menu.hamburger, table[3]) + orders(randomTime(), 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 () => { + let ordersTable2 = [menu.hamburger,menu.hotdog, menu.pizza] + let allOrders = ordersTable2.map(ordersTable => orders(randomTime(), ordersTable, table[1])) + try{ + let todasLasOrdenes = await Promise.all(allOrders) + console.log(todasLasOrdenes) + }catch(err){ + console.error(err) + } +} + +const waiter4 = async (apiUrl) => { + const orderOne = await fetchOrders(apiUrl); + const orderTwo = await fetchOrders(apiUrl); + const orderThree = await fetchOrders(apiUrl); + const orderFour = await fetchOrders(apiUrl); + let ordersTable2 = [orderOne, orderTwo, orderThree, orderFour] + let allOrders = ordersTable2.map(ordersTable => orders(randomTime(), ordersTable, table[1])) + try { + let todasLasOrdenes = await Promise.all(allOrders) + console.log(todasLasOrdenes) + } catch (err) { + console.error(err); + } +} + + + + + waiter(); +waiter2(); +waiter3(); +waiter3(); +waiter4 (API)