├── .gitignore ├── LICENSE ├── PULL_REQUEST_TEMPLATE.md ├── README.md ├── package.json └── src └── index.js /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Runtime data 9 | pids 10 | *.pid 11 | *.seed 12 | *.pid.lock 13 | 14 | # Directory for instrumented libs generated by jscoverage/JSCover 15 | lib-cov 16 | 17 | # Coverage directory used by tools like istanbul 18 | coverage 19 | 20 | # nyc test coverage 21 | .nyc_output 22 | 23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 24 | .grunt 25 | 26 | # Bower dependency directory (https://bower.io/) 27 | bower_components 28 | 29 | # node-waf configuration 30 | .lock-wscript 31 | 32 | # Compiled binary addons (https://nodejs.org/api/addons.html) 33 | build/Release 34 | 35 | # Dependency directories 36 | node_modules/ 37 | jspm_packages/ 38 | 39 | # TypeScript v1 declaration files 40 | typings/ 41 | 42 | # Optional npm cache directory 43 | .npm 44 | 45 | # Optional eslint cache 46 | .eslintcache 47 | 48 | # Optional REPL history 49 | .node_repl_history 50 | 51 | # Output of 'npm pack' 52 | *.tgz 53 | 54 | # Yarn Integrity file 55 | .yarn-integrity 56 | 57 | # dotenv environment variables file 58 | .env 59 | 60 | # next.js build output 61 | .next 62 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Comunidad Platzi 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /PULL_REQUEST_TEMPLATE.md : -------------------------------------------------------------------------------- 1 | ## DESCRIPTION 2 | 3 | Solución al reto 04 de Escuela de JavaScript 4 | 5 | Nombre: 6 | Usuario Platzi: 7 | 8 | ## GRUPO 9 | - [ ] Martes 10 | - [ ] Miercoles 11 | - [ ] Jueves 12 | 13 | ## Reto: 14 | - [ ] Primer problema 15 | - [ ] Segundo problema 16 | - [ ] Tercer problema 17 | - [ ] Cuarto Problema (Opcional) -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # javascript-challenge-02 2 | Reto 2 : Curso de Profesional de JavaScript 3 | 4 | # Ejecución 5 | 6 | ``` 7 | npm run start 8 | ``` 9 | 10 | ### Primer problema 11 | Crea una función llamada "randomTime" que te permita retornar un valor en mili segundos de forma aleatoria en el rango de 1000ms hasta 8000ms. 12 | 13 | * Completa la función "orders" manejando el reject. 14 | * Utiliza la función de randomTime 15 | 16 | ### Segundo Problema 17 | 18 | Crea una función llamada "waiter2" que se encargue de recoger dos pedidos, uno de la "Mesa 1" y otro de la "Mesa 3". 19 | 20 | Pedido "Mesa 1": Combo Hotdog 21 | Pedido "Mesa 3": Combo Pizza 22 | 23 | * Utiliza Promesas Encadenadas 24 | * Utiliza la función de randomTime 25 | 26 | ### Tercer Problema 27 | 28 | Crea una función llamada "waiter3" que se encargue de recoger el pedido de la "Mesa 2" el pedido solo puede ser entregado hasta que todos los plantillos estén listos para ser servidos. 29 | 30 | * Pedido "Mesa 2": Combo Hotdog, Combo Pizza, Combo Hotdog 31 | 32 | * Utiliza Async/Await 33 | * Manejo de errores 34 | * Utiliza la función de randomTime 35 | 36 | ### Cuarto Problema (Opcional) 37 | 38 | Crea una función llamada "fetchOrders" que realice un llamado a la API de ordenes y una función llamada "waiter4" que se encargue de solicitar 4 pedidos que deban de ser entregados hasta que estén todos listos. 39 | 40 | * API: https://us-central1-escuelajs-api.cloudfunctions.net/orders 41 | * Utiliza Async/Await 42 | * Manejo de errores 43 | 44 | # Enviar solución de reto 45 | 46 | Debes de crear un "Fork" de este proyecto, revolver los problemas y crear un Pull Request hacia este repositorio. 47 | 48 | # Contribuir 49 | Si alguien quiere agregar o mejorar algo, lo invito a colaborar directamente en este repositorio: [javascript-challenge-02](https://github.com/platzi/javascript-challenge-02/) 50 | 51 | # Licencia 52 | javascript-challenge-02 se lanza bajo la licencia [MIT](https://opensource.org/licenses/MIT). 53 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "escuelajs-reto-04", 3 | "version": "1.0.0", 4 | "description": "Reto 4 Septiembre 21: Curso de Fundamentos de JavaScript", 5 | "main": "index.js", 6 | "scripts": { 7 | "start": "node src/index.js" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "git+https://github.com/platzi/escuelajs-reto-04.git" 12 | }, 13 | "keywords": [ 14 | "javascript", 15 | "escuelajs", 16 | "node" 17 | ], 18 | "author": "Oscar Barajas ", 19 | "license": "MIT", 20 | "bugs": { 21 | "url": "https://github.com/platzi/escuelajs-reto-04/issues" 22 | }, 23 | "homepage": "https://github.com/platzi/escuelajs-reto-04#readme" 24 | } -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | const orders = (time, product, table) => { 2 | console.log(`### Orden: ${product} para ${table}`); 3 | return new Promise((resolve, reject) => { 4 | setTimeout(() => { 5 | resolve(`=== Pedido servido: ${product}, tiempo de preparación ${time}ms para la ${table}`); 6 | }, time); 7 | }); 8 | } 9 | 10 | const menu = { 11 | hamburger: 'Combo Hamburguesa', 12 | hotdog: 'Combo Hot Dogs', 13 | pizza: 'Combo Pizza', 14 | }; 15 | 16 | const table = ['Mesa 1', 'Mesa 2', 'Mesa 3', 'Mesa 4', 'Mesa 5']; 17 | 18 | const waiter = () => { 19 | orders(6000, menu.hamburger, table[3]) 20 | .then((res) => console.log(res)) 21 | .catch((err) => console.error(err)); 22 | }; 23 | 24 | waiter(); 25 | --------------------------------------------------------------------------------