인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

Harry님의 프로필 이미지
Harry

작성한 질문수

[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지

파일 시스템 사용하기

안녕하세요~질문있습니다.

해결된 질문

작성

·

165

0

안녕하세요 제로초님~

강의에서 동기메서드를 사용한 sync.js와 비동기메서드를 사용한 async.js의 차이가 여러개를 실행했을 때, async.js는 모든 파일들이 동시에 백그라운드로 들어가서 실행되고, 그러나 순서는 지켜진다고 하셨는데요.

그럼 sync.js를 한번실행한것과 async.js를 한번 실행한것은 차이가 없나요?

비동기 메서드를 사용한 1번 2번 3번 4번 함수에서 2번은 1번이 백그라운드에서 처리되고, 테스크큐에서 호출스택으로 갈때까지 호출 스택에 들어가지 못하는게 맞나요??

답변 1

1

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

한 번만 실행하는 경우는 큰 차이가 없습니다. 동시에 여러번 호출될 때 비동기의 진가가 드러납니다.

비동기 1,2,3,4번이 뭔가요? 그리고 콜백 함수와 readFile 본 함수도 순서 차이가 있습니다.

Harry님의 프로필 이미지
Harry
질문자

이번강의에서 나온 코드에서 await으로 처리한 각각의 함수들이 이벤트루프에서 어떻게 동작하는지 궁금해서 여쭤봤습니다. 아래에서 2번 콘솔로그는 1번이 호출스택 > 백그라운드>테스크큐>호출스택에서 실행될 때까지 호출스택에 들어가지 못하는게 맞나요??

const fs = require('fs').promises;
async function main() {
  let data = await fs.readFile('./readme.txt')
  console.log('1번', data.toString());
  data = await fs.readFile('./readme.txt')
  console.log('2번', data.toString());
  data = await fs.readFile('./readme.txt')
  console.log('3번', data.toString());
  data = await fs.readFile('./readme.txt')
  console.log('4번', data.toString());
}
main();
제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

네 await이면 앞에 것이 끝나야 호출스택에 들어갑니다.

저도 궁금햇어요 감사해여 질문해줘서

Harry님의 프로필 이미지
Harry

작성한 질문수

질문하기