Una de las principales características añadidas en esta versión fue la inclusion de async y await, entre otras mas.

Object.entries

Nos permite devolver la clave y los valores de una matriz

const data = {
    frontend: 'Pablo',
    backend: 'David',
    desing: 'Dayana'
}

const entries = Object.entries(data);
console.log(entries);
//Salida>
//[ [ 'frontend', 'Pablo' ],
//  [ 'backend', 'David' ],
//  [ 'desing', 'Dayana' ] ]

Object.values

Nos devuelve los valores de una matriz en un arreglo

const data = {
    frontend: 'Pablo',
    backend: 'David',
    desing: 'Dayana'
}
const values = Object.values(data);
console.log(values);
// salida>
// [ 'Pablo', 'David', 'Dayana' ]

Padding

Añade elementos a un string

const string = "hello";
console.log(string.padStart(7,'hi'));
console.log(string.padEnd(8 ,'hi'));

// Salida>
// hihello
// hellohih

Async y Await

Existe una sintaxis especial para trabajar con promesas de una forma más confortable, llamada async/await. Es sorprendentemente fácil de entender y usar.

No permite ser mas claros al construir este tipo de funciones y trabajar de mejor manera con el asincronismo.

const helloWorld = () => {
    return new Promise ((resolve, reject) => {
        (true)
            ? setTimeout(() => resolve('Hello World'), 3000)
            : reject(new Error('Test'))
    })
};

const helloAsync = async () => {
    const hello = await helloWorld();
    console.log(hello);
}

helloAsync();

La forma correcta del uso de async/await es con el uso de try/catch

const anotherFunction = async () => {
    try{
        const hello = await helloWorld();
        console.log(hello);
    } catch(error) {
        console.log(error)
    }
}