Para hacer un poco de recordatorio, en la entrada anterior vimos las novedades que se presentaron en ES8. Hoy, vamos a ver las novedades que presenta ES9.
Rest/Spread Properties
Básicamente, viene a ser lo mismo que se puede hacer con los parámetros de las funciones y los arrays desde ES6 (que ya vimos en el blog), pero con propiedades de objetos.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
const obj = { name: 'John', age: '32', city: 'New York', address: 'Address...' } // Rest const {name, age, ...rest} = obj; console.log(name, age, rest); // John 32 { city: 'New York', address: 'Address...' } // Spread const newObj = {name, job: 'Developer' , ...rest}; console.log(newObj); const copyObj = { ...newObj }; console.log(copyObj, newObj); |
Promise: finally()
.finally() es una función introducida en las promesas que se ejecutará siempre al finalizar la promesa, es decir, se ejecutará tanto si la promesa se ejecuta con éxito o es rechazada. Si lo has utilizado alguna vez y lo recuerdas, vendría a ser como el always del Ajax de jQuery.
Por tanto, ahora tendríamos tres posibles funciones callback para las promesas que serían .then(), .catch() y .finally().
1 2 3 4 5 6 7 8 9 10 |
fetch('https://jsonplaceholder.typicode.com/todos/1') .then(response => response.json()) .then(json => console.log(json)) .catch(error => console.log(error)) .finally(() => console.log('Esto se mostrará siempre!')); // { userId: 1, // id: 1, // title: 'delectus aut autem', // completed: false } // Esto se mostrará siempre! |
Iteración Asíncrona
Se ha introducido el await para bucles for , lo cual permite iterar sobre iterables asíncronos (promesas). Se tiene que utilizar dentro de funciones asíncronas como cualquier await , tal como ya vimos en el post sobre async/await. El bucle quedaría así:
1 2 3 |
for await (const variable of iterable) { ... } |
Para saber más y ver ejemplos, echa un vistazo a este post o éste.
Cambios en Regex
En esta versión del estándar, ha habido bastantes cambios en el prototype Regex. Si quieres echarle un vistazo a estos cambios, en este enlace o éste explican todos con ejemplos.
Ver código anterior en vivo: https://repl.it/@vreaxe/ES9-Novedades
-
- https://developers.google.com/web/updates/2017/06/object-rest-spread
- https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/Promise/finally
- http://2ality.com/2016/10/asynchronous-iteration.html
- https://www.freecodecamp.org/news/es9-javascripts-state-of-art-in-2018-9a350643f29c/