ES9 features
- Object spread operator
const animals = {
tiger: 23,
lion: 5,
monkey: 2
}
const {tiger, ...rest} = animals;
tiger // prints 23
rest // prints {lion: 5, monkey: 2}
- Finally
const urls = [
'https://jsonplaceholder.typicode.com/users',
'https://jsonplaceholder.typicode.com/posts',
'https://jsonplaceholder.typicode.com/albums'
]
Promise.all(urls.map(url => {
return fetch(url).then(resp => resp.json())
})).then(result => {
console.log(result[0])
console.log(result[1])
console.log(result[2])
})
.catch(err => console.log('uhhhhh fix it!', err))
.finally(() => console.log('extra'));
finally는 promise가 다 끝나고 나서 실행되는 코드이다. 프로미스가 에러가 나든 성공하든 상관없이 실행된다.
- for await of
const getData2= async function() {
const arrayOfPromises = urls.map(url => fetch(url));
for await (let request of arrayOfPromises) {
const data = await request.json()
console.log(data)
}
}
기존 array의 for of
구문이 async await에 적용된 것이다. map을 사용해서 처리해도 되지만 for of
를 통해서 promise를 iterate할 수 있다는 것을 보여주기 위해서 사용했다.