inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

Promise, async/await

async await관련 질문 드립니다.

177

cloer

작성한 질문수 11

0

async function A() { ... } // 3초
async function B() { ... } // 2초

const a = await A(); // (1)
const b = await B(); // (2)

시간이 많이 소요 되는 비동기 함수 A, B 두개가 있을 때 위와 같이 호출하면 (1)에서 A호출해서 백그라운드로 넘겨주고 기다리다가 결과 받고 (2)에서 B호출해서 백그라운드로 넘겨주고 기다리다가 결과 받는다고 이해했습니다. 총 5초가 소요된다고 예상했습니다.

그렇게되면 백그라운드에서 js보다 빠른 c++등 으로 실행할 수 있다는 점 빼고 비동기를 사용하는 이유가 없다는 생각이 들었습니다. A와 B가 동기적으로 실행되기 때문입니다.

async function A() { ... } // 3초
async function B() { ... } // 2초

const aPromise = A(); // (1)
const bPromise = B(); // (2)

const a = await aPromise; // (3)
const b = await bPromise; // (4)

위와같이 (1)(2)에서 결과를 기다리지 않고 비동기함수를 백그라운드로 둘다 넘기면 A,B가 동시에 백그라운드에서 실행되기 때문에 총 3초가 소요된다고 예상했습니다.

 

제가 이해한 내용이 맞는지 궁금합니다. A, B의 순서가 상관 없다면 아래처럼 작성하는 것이 속도면에서 나은 코드인가요?

 

 

 

mysql nodejs mongodb Sequelize

답변 1

1

제로초(조현영)

네 5초 3초가 걸리는 게 맞습니다. 동시에 실행될 수 있는 코드라면 아래처럼 작성하여 시간을 줄이셔야 합니다.

await Promise.all([aPromise, bPromise])도 방법입니다.

0

cloer

감사합니다!

리눅스 노드 설치시 패키지

0

172

0

socket.js 에서 referer로부터 roomId를 가져올 때

0

926

3

스트리밍 방식으로 대용량 파일 업로드 & 다운로드 관련 질문

0

2297

2

a[title] 질문드립니다

0

386

1

리뉴얼 강의 및 공부 방법

0

589

1

jwt decode

0

1138

1

node.js 교과서 3판 질문드립니다

0

396

1

passport와 jwt

0

438

1

리뉴얼 강의

0

428

2

혹시 Node.js 교과서 3판 이북은 언제 나오나요?

0

359

1

몽고디비 사용자도 MYSQL부분을 들어야 하나요???

0

490

1

sql 쿼리 로그는 어떤 모듈이 작성하나요?

0

511

2

nunjucks res.render('error'); 작동을 안합니다.

0

518

1

질문있습니다.

0

348

1

multer 한글 파일 업로드시 파일명이 깨져요.

1

3543

1

수업자료는 어디있나요?

0

374

1

질문 있습니디

0

245

1

multer 사용시 file 외 name값은 못받나용?

0

430

1

코드 중복 부분 질문드립니다.

0

303

1

api 만드는 이유 질문드립니다.

0

293

1

Strategy의 done에 대해 질문드립니다.

0

374

1

안녕하세요 fs 권한 관련 질문드립니다

0

456

1

시퀄라이즈 연결질문...

0

510

2

res.setHeader vs res.cookie

0

1797

3