velopert / learnjs

벨로퍼트와 함께하는 모던 자바스크립트
https://learnjs.vlpt.us/
85 stars 47 forks source link

3장. 자바스크립트에서 비동기 처리 다루기 · GitBook #15

Open utterances-bot opened 4 years ago

utterances-bot commented 4 years ago

3장. 자바스크립트에서 비동기 처리 다루기 · GitBook

https://learnjs.vlpt.us/async/

heedaelee commented 3 years ago

제가 알기론 비동기 fetch같은 함수사용시 콜백을 안쓰고 위처럼 내부에 정의할시, 예를 들면 fetch('www.....'){ console.log(내가 fetch후 갖고 오고 싶은데이터) } 와 같이 log찍으면 비동기니까 fetch 해서 데이터 오기전에 이미 console.log 찍어버리니 undefined 에러 뜰거에요. 그런데 콜백으로 console을 함수써서 순서를 정해 버리면 데이터 받기 전까진 console.log가 안돌아가니 에러가 안나죠. 비동기에서 순위 정할수 있는걸로 알고 있어요.

hammlee commented 3 years ago

콜백을 쓰는 궁극적인 이유는 함수 간의 실행 순서를 잡아주는 겁니다. A 함수가 실행되고 결과가 나오면 그걸 B에게 받아 처리하게 끔 순서를 잡아주는거죠. (그게 결국 비동기를 처리해주는 거랑 동일한 말입니다) 위 코드는 이렇게 하면 좀 더 이해하시기 쉬울거에요.

function work(callback) { setTimeout(() => { const start = Date.now(); for (let i = 0; i < 10000; i++) {} const end = Date.now(); callback(end - start + 'ms'); }, 0); }

console.log('작업 시작!'); work((endTime) => { console.log(endTime); console.log('작업이 끝났어요'); }); console.log('다음 작업')

JunghooX commented 2 years ago

22.08.18 슬슬 이해하기 복잡해지네요 ㅠ