ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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를 실행할 수 없게된다.

    더보기

    +추가

     

    여기서 동시란, 같은 시각의 개념이 아니고, 같은 시간대의 개념이다. 실행하자마자 결과가 나오는게 아니고, 같은 시간대에 진행이 된다는 뜻. 수학에서도 이런개념을 배웠던 것 같은데 까마득해서 기억나지않아... 격세지감...

     

    참고자료

     

    General asynchronous programming concepts

    In this article, we'll run through a number of important concepts relating to asynchronous programming, and how this looks in web browsers and JavaScript. You should understand these concepts before working through the other articles in the module.

    developer.mozilla.org

     

Designed by Tistory.