for문과 async/await을 같이 써서 프로미스를 순차적으로 실행할 수 있습니다. for문과 함께 쓰는 것은 노드 10 버전부터 지원하는 ES2018 문법입니다.
const promise1 = Promise.resolve('성공1'); const promise2 = Promise.resolve('성공2'); (async () => { for await (promise of [promise1, promise2]) { console.log(promise); } })();
for await of문을 사용해서 프로미스 배열을 순회하는 모습입니다. async 함수의 반환값은 항상 Promise로 감싸집니다. 따라서 실행 후 then을 붙이거나 또 다른 async 함수 안에서 await을 붙여서 처리할 수 있습니다.
async function findAndSaveUser(Users) { // 생략 } findAndSaveUser().then(() => { /* 생략 */ }); // 또는 async function other() { const result = await findAndSaveUser(); }
앞으로 중첩되는 콜백 함수가 있다면 프로미스를 거쳐 async/await 문법으로 바꾸는 연습을 해보길 바랍니다. 코드가 훨씬 간결해질 것입니다. 이 책의 예제는 async/await 문법을 적극적으로 사용하므로 익숙해지는 것이 좋습니다.