- 자바스크립트 async mode loop change to sync
* 비동기로 동작
[...Array(2).keys()].map(async (el, i) => {
console.log('1', i);
await new Promise(resolve => setTimeout(resolve, 500));
console.log('2', i);
await new Promise(resolve => setTimeout(resolve, 500));
console.log('3', i);
});
console.log('완료-1');
- 결과
1 0
1 1
완료-1
2 0
2 1
3 0
3 1
//-------------------------------------
* 동기로 변환
- Promise.all 사용, map 만 가능 (forEach, some 등은 불가)
- 주의 ! 동시에 실행됨
await Promise.all([...Array(2).keys()].map(async (el, i) => {
console.log('1', i);
await new Promise(resolve => setTimeout(resolve, 500));
console.log('2', i);
await new Promise(resolve => setTimeout(resolve, 500));
console.log('3', i);
}));
console.log('완료-2');
- 결과
1 0
1 1
2 0
2 1
3 0
3 1
완료-2
//-------------------------------------
* 모두 순차 실행
- for 사용
for (let v of [...Array(2).keys()]) {
console.log('1', v);
await new Promise(resolve => setTimeout(resolve, 500));
console.log('2', v);
await new Promise(resolve => setTimeout(resolve, 500));
console.log('3', v);
}
console.log('완료-3');
- 결과
1 0
2 0
3 0
1 1
2 1
3 1
완료-3
'Code > JavaScript' 카테고리의 다른 글
Electron.js 프로젝트 빌드 방법(윈도우 실행파일 만들기) (0) | 2024.03.17 |
---|---|
JS, CSS 파일 압축 유틸 (0) | 2024.02.21 |
Node.js에서 CJS(CommonJS Module) 와 ESM(ES Module) 동시 사용 방법 (0) | 2023.10.08 |
[JS] Express.js 사용법 (0) | 2023.08.13 |
node.js 모듈 사용하기 (0) | 2023.08.12 |