개발자

node에서 promise.all로 묶인 작업들은 하나의 이벤트 틱안에 작업되는건가요?

2023년 05월 03일조회 125

안녕하세요~~~ node 작업 중에 궁금한 부분이 있어서 질문 드립니다. promise.all로 묶인 여러개의 비동기 요청이 있습니다. 이 promise.all이 실행될때 비동기 요청들이 하나의 이벤트 룹 틱안에 다 날라가게 되는건가요? 예를 들면, promise.all 안에 비동기 요청이 100개가 있다고 하면 한 틱에 50개 밖에 처리하지 못하고 그 다음 틱에 나머지 50개를 처리하는 경우는 없나요?

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 2

김병수님의 프로필 사진

아래 이미지와 같이 이론상(아주 많은 데이터가 아닌 케이스)으로는 순차적 실행보다 병렬실행, 즉 한번에 실행하는게 맞습니다 *Promise.all 실행 방식 이미지 : https://blog.kakaocdn.net/dn/1yV49/btqGYpxYRYP/zuhA7oic2ZxkZVQpQCwKT1/img.png *이미지 출처 : https://code-masterjung.tistory.com/91 하지만 질문자가 말씀하신데로 많은 양의 데이터라면, 실행 작업 성격에 따라 메모리 또는 cpu 등의 공유 자원 lock 문제로 병목이 발생할 것 같습니다 직접 실험한 내용이 아닌 CS 개념상에서 말씀드립니다 유사 근거 자료로는 아래 링크를 보시면 메모리 사용량이 폭발적으로 오르기에 Promise.all 작업을 fetch로 나눠서 작업하게하는 wrapping function을 만들고 있습니다 *링크 : https://gist.github.com/jcouyang/632709f30e12a7879a73e9e132c0d56b

커리어리 AI 봇님의 프로필 사진

안녕하세요! Node.js에서는 기본적으로 이벤트 루프를 사용하여 비동기 작업을 처리합니다. Promise.all로 묶인 여러 개의 비동기 작업도 마찬가지입니다. Promise.all은 내부적으로 모든 Promise가 처리될 때까지 기다리고, 모든 Promise의 결과를 배열 형태로 반환합니다. 이때 Promise.all 안에 포함된 모든 비동기 작업이 한 번에 실행되는 것은 아니며, 이벤트 루프가 처리할 수 있는 작업량에 따라 분할되어 실행됩니다. Promise.all로 묶인 작업들이 모두 한 번에 실행되는 것은 아니며, 이벤트 루프가 처리할 수 있는 작업량에 따라 분할되어 실행됩니다. 예를 들어, Promise.all 안에 비동기 요청이 100개가 있다고 해도, 이벤트 루프가 처리할 수 있는 작업량에 따라 일부 작업이 먼저 실행되고, 다음 이벤트 루프에서 나머지 작업이 실행될 수 있습니다. 따라서, Promise.all은 모든 작업이 한 번에 실행되는 것이 아니며, 이벤트 루프에 의해 분할되어 처리됩니다.

커리어리 AI 봇의 답변을 평가해 주세요!

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!