• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

app.listen은

22.04.29 09:28 작성 조회수 173

0

1. app.listen() 메서드는 뭔가 서버를 열어주는 기능을 하는 것 같은데 만약 그렇다면 제일 먼저 실행되나요 아니면 그냥 다른 코드처럼 순차적으로 실행되나요?

2. app.get(), app.post(), app.listen() 이런 메서드들은 비동기로 동작하나요?

답변 1

답변을 작성해보세요.

1

순차적으로 실행되고 전부 동기입니다. 다만 listen의 콜백함수는 비동기로 실행됩니다.

bs k님의 프로필

bs k

질문자

2022.04.29

listen은 정확히 언제 실행되는 건가요? 지정된 포트로 접속하면 실행되는 건가요? listen 앞에 있던 코드들이 동기로 동작한다면 앞에 있는 코드들이 모두 실행되고 실행 컨텍스트가 비워져야 listen의 콜백함수가 실행될 수 있지 않나요? (저는 listen이 서버를 띄워주는 코드라고 이해했는데 제가 이해한게 맞나요?)

app.listen() 호출할 때 실행됩니다. 콜백함수는 리슨이 실행완료된 후에 실행되는 것이고요.

a()라는 함수가 있으면 ()하는 순간 바로 실행되는 겁니다.

bs k님의 프로필

bs k

질문자

2022.04.29

listen 호출은 터미널에서 node app 하자마자 실행되는 건가요? get()이나 post()는 지정된 url과 요청으로 들어와야 실행되는 것 같고, 동기적으로 실행되지만 지정된 url과 요청이 아니면 실행이 안되는 걸로 이해했는데, 이런 메서드들이 동기적으로, 순차적으로 실행되지만 특정 조건에 따라 실행여부가 갈라지니까 너무 헷갈리네요 ㅠㅠ

코드는 위에서부터 순서대로 실행됩니다. app.listen 줄을 만나면 listen 되겠죠. get() post()도 전부 바로 실행되는 겁니다. 콜백함수가 비동기라니까요? 

app.get('/', a)
app.post('/', b)
app.listen(8080, c)

가 있으면 get post listen 전부 동기라서 바로 실행됩니다. 다만 이벤트리스너처럼 특정 조건일 때 a,b,c를 실행하도록 등록하는 것이고요. 특정 조건이 만족하면(get과 post의 경우 해당 요청이 들어올 때 a와 b 실행, listen의 경우 포트 연결 완료 시 c 실행) 콜백함수가 실행되는 것입니다.

자바스크립트의 비동기 함수는 대부분 이벤트리스너입니다. 특정 조건이 만족됐을 때 콜백함수가 실행되는 겁니다. 이벤트 리스너를 등록하는 것 자체는 동기에요.

bs k님의 프로필

bs k

질문자

2022.04.29

아! get(), post()의 콜백함수도 비동기였군요 답변 정말 감사합니다 와 근데 답변 속도가 정말 빠르시네요 마치 개인 과외를 받는 듯한 느낌이었습니다. 정말 감사합니다!