728x90
비동기 함수의 반복문
forEach( )
⸰ 동기적으로 동작, 비동기 함수를 기다리지 않음
⸰ try/catch 가능
⸰ 간단한 동기 반복 작업에 사용
const func = async () => {
await Promise.all(data.map(async (i) => {
await insertDatabase(i);
}));
};
비동기 작업의 완료를 보장하지 않으므로, Promise.all을 사용하여 병렬 처리
for
⸰ 동기적으로 동작, 비동기 함수를 기다리지 않음
⸰ 조건식, 초기화식, 후위식 설정 가능하여 유연하게 반복 제어
const func = async () => {
for (let i = 0; i < data.length; i++) {
await insertDatabase(data[i]);
}
};
비동기 작업을 순차적으로 처리
for ... of
⸰ 동기적으로 동작, 비동기 함수를 기다리지 않음
⸰ try/catch 가능
⸰ 배열이나 이터러블 객체 순회에 사용
const func = async () => {
for (let i of data) {
await insertDatabase(i);
}
};
비동기 작업을 순차적으로 처리
for ... in
⸰ 동기적으로 동작, 비동기 함수와 무관하게 동작
⸰ 객체 속성을 순회할 때 사용
const func = async () => {
for (let i in data) {
await insertDatabase(data[i]);
}
};
객체의 속성을 순회하며, 배열에서는 인덱스를 통해 접근
for await ... of
⸰ 비동기적으로 동작, await 키워드를 사용하여 비동기 작업이 완료될 때까지 기다림
⸰ 비동기 이터러블 객체(ex 비동기 생성기)를 순회할 때 사용
const func = async () => {
for await (let i of data) {
await insertDatabase(i);
}
};
비동기 이터러블 객체나 배열의 비동기 작업을 순차적으로 처리
Promise.All( )
⸰ 비동기적으로 동작, 여러 비동기 작업을 병렬로 실행 후 모든 Promise가 해결되면 결과를 반환
⸰ 한 작업이라도 실패하면, 전체가 실패로 처리됨
⸰ 여러 비동기 작업을 병렬로 실행하고, 모두 완료된 후 결과를 처리할 때 사용
const func = async () => {
await Promise.all(data.map(async (i) => {
await insertDatabase(i);
}));
};
비동기 작업을 병렬로 처리
728x90
'💠프로그래밍 언어 > JavaScript' 카테고리의 다른 글
[심화] 프로그래스 바 구현하는 방법 (0) | 2024.08.26 |
---|---|
[심화] Object / Map 의 차이점은 뭘까? (0) | 2024.08.26 |
[심화] 비동기 함수 Promise, async/await 파헤치기 (0) | 2024.07.29 |
[심화] 이벤트를 발생시키는 EventEmitter (0) | 2024.07.25 |
[심화] 불변성 / 참조 투명성에 대해 알아보자 (0) | 2024.07.24 |