현재 버전

지금 동기 비동기 방식을 전혀 다르게 이해하고 계신것 같습니다.

동기의 경우 실행시에 바로 읽혀서 차례로 실행되는것이고,

비동기의 경우 상황이 맞을때 까지 이벤트 루프에서 대기를 타는건데,

이때 중요한건 비동기 안으로 들어가서 모든 코드를 읽고난 후 각각의 라인들이 따로따로 대기를 타는게 아니라, setTimeout 블록 자체가 대기를 타게 됩니다. 왜냐하면 주어진 시간이 오기 전까진 셋타임아웃에 넣은 함수가 호출(실행)이 되지 않으니까요. 

그래서 2초의 시간이 지나면 setTimeout에 넣은 함수를 호출해서 그제서야 셋타임아웃 안에 있는 코드들을 위에서부터 라인별로 읽어나가게 되는거죠.

(이 경우 콘솔로그, 그다음이 유저 아이디, 그리고 마지막으로 콜백함수 -> 콜백함수가 유저를 출력하는거니까 마지막으로 유저를 출력)

그리고 댓글로 주신 예시는 전부 동기코드이기 때문에 함수가 호출되는 순서대로 실행이 되어야 되는게 맞구요,

다만 두번째도 foo()부터 실행되는건 아니고,

스타트부터 시작해서 호출한 함수가 끝나기를 대기를 탑니다.

즉 실행 순서가 start -> bar -> foo -> console.log가 맞습니다.

단지 start와 bar함수는 다른 함수 호출 이외에 아무것도 하는게 없으니까 디스플레이상 아무것도 안 보이는거구요.



수정 이력

2021-07-04 11:55:55 에 아래 내용에서 변경 됨 #6

지금 동기 비동기 방식을 전혀 다르게 이해하고 계신것 같습니다.

동기의 경우 실행시에 바로 읽혀서 차례로 실행되는것이고,

비동기의 경우 상황이 맞을때 까지 이벤트 루프에서 대기를 타는건데,

이때 중요한건 비동기 안으로 들어가서 모든 코드를 읽고난 후 각각의 라인들이 따로따로 대기를 타는게 아니라, setTimeout 블록 자체가 대기를 타게 됩니다. 왜냐하면 주어진 시간이 오기 전까진 셋타임아웃에 넣은 함수가 호출(실행)이 되지 않으니까요. 

그래서 2초의 시간이 지나면 setTimeout에 넣은 함수를 호출해서 그제서야 셋타임아웃 안에 있는 코드들을 위에서부터 라인별로 읽어나가게 되는거죠.

(이 경우 콘솔로그, 그다음이 유저 아이디, 그리고 마지막으로 콜백함수 -> 콜백함수가 유저를 출력하는거니까 마지막으로 유저를 출력)

그리고 댓글로 주신 예시는 전부 동기코드이기 때문에 함수가 호출되는 순서대로 실행이 되어야 되는게 맞구요,

다만 두번째도 foo()부터 실행되는건 아니고,

스타트부터 시작해서 호출한 함수가 끝나기를 대기를 탑니다.

즉 실행 순서가 start -> bar -> foo -> console.log가 맞습니다.

단지 start와 bar함수는 다른 함수 호출 이외에 아무것도 하는게 없으니까 단지 디스플레이상 아무것도 안 보이는거구요.


2021-07-04 11:53:41 에 아래 내용에서 변경 됨 #5

지금 동기 비동기 방식을 전혀 다르게 이해하고 계신것 같습니다.

동기의 경우 실행시에 바로 읽혀서 차례로 실행되는것이고,

비동기의 경우 상황이 맞을때 까지 이벤트 루프에서 대기를 타는건데,

이때 중요한건 비동기 안으로 들어가서 모든 코드를 읽고난 후 각각의 라인들이 따로따로 대기를 타는게 아니라, setTimeout 블록 자체가 대기를 타게 됩니다. 왜냐하면 주어진 시간이 오기 전까진 셋타임아웃에 넣은 함수가 호출(실행)이 되지 않으니까요. 

그래서 2초의 시간이 지나면 setTimeout에 넣은 함수를 호출해서 그제서야 셋타임아웃 안에 있는 코드들을 위에서부터 라인별로 읽어나가게 되는거죠.

(이 경우 콘솔로그, 그다음이 유저 아이디, 그리고 마지막으로 콜백함수 -> 콜백함수가 유저를 출력하는거니까 마지막으로 유저를 출력)

그리고 댓글로 주신 예시는 전부 동기코드이기 때문에 함수가 호출되는 순서대로 실행이 되어야 되는게 맞구요,

다만 두번째도 foo()부터 실행되는건 아니고,

스타트부터 시작해서 호출한 함수가 끝나기를 대기를 탑니다.

즉 실행 순서가 start -> bar -> foo -> console.log가 맞습니다.


2021-07-04 11:42:01 에 아래 내용에서 변경 됨 #4

지금 동기 비동기 방식을 전혀 다르게 이해하고 계신것 같습니다.

동기의 경우 실행시에 바로 읽혀서 차례로 실행되는것이고,

비동기의 경우 상황이 맞을때 까지 이벤트 루프에서 대기를 타는건데,

이때 중요한건 비동기 안으로 들어가서 모든 코드를 읽고난 후 각각의 라인들이 따로따로 대기를 타는게 아니라, setTimeout 블록 자체가 대기를 타게 됩니다. 왜냐하면 주어진 시간이 오기 전까진 셋타임아웃에 넣은 함수가 호출(실행)이 되지 않으니까요. 

그래서 2초의 시간이 지나면 setTimeout에 넣은 함수를 호출해서 그제서야 셋타임아웃 안에 있는 코드들을 위에서부터 라인별로 읽어나가게 되는거죠.

(이 경우 콘솔로그, 그다음이 유저 아이디, 그리고 마지막으로 콜백함수 -> 콜백함수가 유저를 출력하는거니까 마지막으로 유저를 출력)

그리고 댓글로 주신 예시는 전부 동기코드이기 때문에 함수가 호출되는 순서대로 실행이 되어야 되는게 맞구요.

그리고 두번째도 foo()부터 실행되는건 아니고,

동기코드이기 떄문에 스타트부터 시작해서 호출한 함수가 끝나기를 대기를 탑니다.

즉 실행 순서가 start -> bar -> foo -> console.log가 맞습니다.


2021-07-04 11:41:24 에 아래 내용에서 변경 됨 #3

지금 동기 비동기 방식을 전혀 다르게 이해하고 계신것 같습니다.

동기의 경우 실행시에 바로 읽혀서 차례로 실행되는것이고,

비동기의 경우 상황이 맞을때 까지 이벤트 루프에서 대기를 타는건데,

이때 중요한건 비동기 안으로 들어가서 모든 코드를 읽고난 후 각각의 라인들이 따로따로 대기를 타는게 아니라, setTimeout 블록 자체가 대기를 타게 됩니다. 왜냐하면 주어진 시간이 오기 전까진 셋타임아웃에 넣은 함수가 호출(실행)이 되지 않으니까요. 

그래서 2초의 시간이 지나면 setTimeout에 넣은 함수를 호출해서 그제서야 셋타임아웃 안에 있는 코드들을 위에서부터 라인별로 읽어나가게 되는거죠.

(이 경우 콘솔로그 유저 아이디, 그리고 마지막으로 콜백함수 -> 콜백함수가 유저를 출력하는거니까 마지막으로 유저를 출력)

그리고 댓글로 주신 예시는 전부 동기코드이기 때문에 함수가 호출되는 순서대로 실행이 되어야 되는게 맞구요.

그리고 두번째도 foo()부터 실행되는건 아니고,

동기코드이기 떄문에 스타트부터 시작해서 호출한 함수가 끝나기를 대기를 탑니다.

즉 실행 순서가 start -> bar -> foo -> console.log가 맞습니다.


2021-07-04 11:40:30 에 아래 내용에서 변경 됨 #2

지금 동기 비동기 방식을 전혀 다르게 이해하고 계신것 같습니다.

동기의 경우 실행시에 바로 읽혀서 차례로 실행되는것이고,

비동기의 경우 상황이 맞을때 까지 이벤트 루프에서 대기를 타는건데,

이때 중요한건 비동기 안으로 들어가서 모든 코드를 읽고난 후 각각의 라인들이 따로따로 대기를 타는게 아니라, setTimeout 블록 자체가 대기를 타게 됩니다. 왜냐하면 주어진 시간이 오기 전까진 셋타임아웃에 넣은 함수가 호출(실행)이 되지 않으니까요. 

그래서 2초의 시간이 지나면 setTimeout에 넣은 함수를 호출해서 그제서야 셋타임아웃 안에 있는 코드들을 위에서부터 라인별로 읽어나가게 되는거죠.

(이 경우 콘솔로그 유저 아이디, 그리고 마지막으로 콜백함수 -> 콜백함수가 유저를 출력하는거니까 마지막으로 유저를 출력)

그리고 댓글로 주신 예시는 전부 동기코드이기 때문에 함수가 호출되는 순서대로 실행이 되어야 되는게 맞구요.


2021-07-04 11:37:16 에 아래 내용에서 변경 됨 #1

지금 동기 비동기 방식을 전혀 다르게 이해하고 계신것 같습니다.

동기의 경우 실행시에 바로 읽혀서 차례로 실행되는것이고,

비동기의 경우 상황이 맞을때 까지 이벤트 루프에서 대기를 타는건데,

비동기 안의 모든 코드가 읽혀서 각각의 라인들이 따로따로 대기를 타는게 아니라, setTimeout 블록 자체가 대기를 타게 됩니다. 왜냐하면 주어진 시간이 오기 전까진 셋타임아웃에 넣은 함수가 호출이 안되어 있거든요. 

그래서 2초의 시간이 지나면 setTimeout에 넣은 함수를 그제서야 위에서부터 라인별로 읽어나가게 되는거죠.

(이 경우 콘솔로그 유저 아이디, 그리고 마지막으로 콜백함수 -> 콜백함수가 유저를 출력하는거니까 마지막으로 유저를 출력)

그리고 댓글로 주신 예시는 전부 동기코드이기 때문에 함수가 호출되는 순서대로 실행이 되어야 되는게 맞구요.