-
async, await 의 개념(1)TodayILearned/node.js 2020. 10. 11. 02:22
복습이나 기록을 한 번 미루다보니 쌓이고 쌓이는 글감만 늘어서;; 쳐내야겠다!
async:
javaScript는 이전의 작업이 끝나기 전에 다른 작업을 시작한다. 따라서 video파일을 읽기 전에 video페이지를 읽음.
빈 video페이지를 읽는 결과를 보여줌.
(비디오파일을 보면서 동시에 렌더파일도 확인함)
export const home = async(req, res) =>{ //await function은 async없이 쓸 수 없음 const videos = await Video.find({});//await:이하의 과정이 끝날 때 까지 기다림 res.render("home", {pageTitle: "Home", videos})//Video.find({})로 찾은 비디오들이 videos에 저장됨
해당 코드는 videos부분에서 에러가 발생해도, 다음 Render를 실행한다.
자바스크립트는 syncronous(동기식)언어이다.
자바스크립트는 싱글스레드이므로, 한번에 하나만 실행하는 구조이다.
예를들어, function A(주문하기)가 다른 function B(메뉴살펴보기)에 의존하고있다면, B가 끝나기를 기다려야 하는 것 처럼 실행된다.
asyncronous:
예를들어, 컴퓨터에 사진을 업로드한다고 할 때, 사진을 업로드하면서, 블로그에 글을 쓸 수 있다. 업로드가 완료된 후 컴퓨터는 우리에게 업로드가 되었다고 알려줄 것이다.(통통거리던지, 번쩍거리던지 해서)
이것은 마치, 글쓰기와 업로드가 동시에 일어난 것 처럼 보이지만.. 사실은 컴퓨터자원을 쪼개서 실행하여, 동시에 실행된 것 처럼 보이게 하는것이다. 실제로 동시에 일어나지 않았지만, 사용자는 동시에 일어난 것 처럼 느끼게 한다.
이를 asyncronous(비동기식) programming 이라고 한다.
반대개념인 syncronous(동기식) programming의 경우, 프로그램의 실행과 결과처리가 동시에 진행되는것을 의미한다. 이 때, 웹 상에 A라는 작업이 끝나기 전까지 B를 실행할 수 없게된다.
더보기+추가
여기서 동시란, 같은 시각의 개념이 아니고, 같은 시간대의 개념이다. 실행하자마자 결과가 나오는게 아니고, 같은 시간대에 진행이 된다는 뜻. 수학에서도 이런개념을 배웠던 것 같은데 까마득해서 기억나지않아... 격세지감...
참고자료
'TodayILearned > node.js' 카테고리의 다른 글
블로킹과 논블로킹 그리고 스레드의 관계(2) (0) 2020.10.30 블로킹과 논블로킹 그리고 스레드의 관계(1) (0) 2020.10.28 var,let,const 의 특징 (0) 2020.10.10