//operador de reposo, guarda datos de un objeto que aun no tiene valores
const obj = {
  name: 'adrian',
  age: 26,
  country: 'MX'
}

//de esta manera establecemos lo que realmente necesitamos de un objeto
//sin necesidad de crear otro objeto
let { name, ...all } = obj
console.log(name, all)
console.log(all)
//unir elementos de objetos a otros objetos
const obj = {
  name: 'adrian',
  age: 26,
}

const obj1 = {
  ...obj,
  country: 'MX'
}
console.log(obj1)
//promise.all para saber cuando una peticion ha terminado
//esta solo es una promesa
const helloWorld = () => {
  return new Promise ((resolve, reject) => {
    (true)
      ? setTimeout(() => resolve('Hello World'),3000)
      //? resolve('Hello World')
      : reject(new Error('Test Error'))
  })
}
helloWorld()
  .then(response => console.log(response),3000)
  .catch(error => console.log(error))
  .finally(() => console.log('Ya finalizó'))
//manejo de regex
const regexData = /([0-9]{4})-([0-9]{2})-([0-9]{2})/
const match = regexData.exec('2018-04-20')
const year = match[1]
const month = match[2]
const day = match[3]
console.log(year, month, day)