Server Side JavaScript

동기와 비동기 프로그래밍

본 수업에서는 노드 프로그래밍의 핵심인 비동기적인 프로그래밍에 대한 개요를 살펴봅니다. 

 

댓글

댓글 본문
작성자
비밀번호
  1. spacemonkey
    인자값으로 encoding 정확하게 써주셨나요? 그 부분에 오타가 있으신것 같습니다.
    대화보기
    • {encoding:'utf8'} 을 오타 없이 잘 입력했는지 확인해 보시기 바랍니다.
      대화보기
      • readFileSync로 파일을 읽어들인후 출력하면 정상출력되는데


        readFile로 파일을 읽어들인후 console.log로출력하면

        <Buffer ef bb bf 68 65 6c 6c 6f 0d 0a>

        이런식으로 출력이됩니다. 뭐가문제인건가요?
      • 강건우
        강의 최고! 감사합니다
      • 의도치않게 글이 너무많이써졌네요 아래에... 죄송합니다
        이거 비밀번호를 막지정해서 지우지 못하고 있는데 이고잉님 확인하시면 글 지워주실수있으신가요 ㅠㅠ..
        여러분 죄송합니다 실수로 그만..
      • 일단 동기는 순서대로 일을 처리하지 만약에 동기화로 Async 의 코드를 실행시켰다면 2가 나오고 fs.readfile 이 함수가 내부적으로 일을 다 처리할떄 까지 console.log(4)는 신경을 안쓸거야 그리고 저 일이 다 처리가 된다음에 이제 console4를 처리하겠지. 근데 비동기는 저런 작업같은게 있으면 다른데로 줘버린다고 생각해 그러면
        다른데서 저게 처리가 되고있겠지 근데 나는 저걸 처리안하고 콘솔 4부터 처리하는거야. 그리고 이번에서는 파일을 읽는 모듈을 배웠는데 파일을 읽는 모듈을 사용하려면 require로 fs라는 파일시스템 모듈을 불러와야한다.
        그리고 fs라는 변수에 저걸 넣으면 fs변수로 파일입출력에 있는 메소드들을 사용할수가 있는거지
        그리고 다큐먼트에가서 저 메소드는 어떻게 쓰는건가 본다음에 인자들을 각각 맞게 지정해주면된다..
        복습개꿀
      • 일단 동기는 순서대로 일을 처리하지 만약에 동기화로 Async 의 코드를 실행시켰다면 2가 나오고 fs.readfile 이 함수가 내부적으로 일을 다 처리할떄 까지 console.log(4)는 신경을 안쓸거야 그리고 저 일이 다 처리가 된다음에 이제 console4를 처리하겠지. 근데 비동기는 저런 작업같은게 있으면 다른데로 줘버린다고 생각해 그러면
        다른데서 저게 처리가 되고있겠지 근데 나는 저걸 처리안하고 콘솔 4부터 처리하는거야. 그리고 이번에서는 파일을 읽는 모듈을 배웠는데 파일을 읽는 모듈을 사용하려면 require로 fs라는 파일시스템 모듈을 불러와야한다.
        그리고 fs라는 변수에 저걸 넣으면 fs변수로 파일입출력에 있는 메소드들을 사용할수가 있는거지
        그리고 다큐먼트에가서 저 메소드는 어떻게 쓰는건가 본다음에 인자들을 각각 맞게 지정해주면된다..
        복습개꿀
      • 일단 동기는 순서대로 일을 처리하지 만약에 동기화로 Async 의 코드를 실행시켰다면 2가 나오고 fs.readfile 이 함수가 내부적으로 일을 다 처리할떄 까지 console.log(4)는 신경을 안쓸거야 그리고 저 일이 다 처리가 된다음에 이제 console4를 처리하겠지. 근데 비동기는 저런 작업같은게 있으면 다른데로 줘버린다고 생각해 그러면
        다른데서 저게 처리가 되고있겠지 근데 나는 저걸 처리안하고 콘솔 4부터 처리하는거야. 그리고 이번에서는 파일을 읽는 모듈을 배웠는데 파일을 읽는 모듈을 사용하려면 require로 fs라는 파일시스템 모듈을 불러와야한다.
        그리고 fs라는 변수에 저걸 넣으면 fs변수로 파일입출력에 있는 메소드들을 사용할수가 있는거지
        그리고 다큐먼트에가서 저 메소드는 어떻게 쓰는건가 본다음에 인자들을 각각 맞게 지정해주면된다..
        복습개꿀
      • 일단 동기는 순서대로 일을 처리하지 만약에 동기화로 Async 의 코드를 실행시켰다면 2가 나오고 fs.readfile 이 함수가 내부적으로 일을 다 처리할떄 까지 console.log(4)는 신경을 안쓸거야 그리고 저 일이 다 처리가 된다음에 이제 console4를 처리하겠지. 근데 비동기는 저런 작업같은게 있으면 다른데로 줘버린다고 생각해 그러면
        다른데서 저게 처리가 되고있겠지 근데 나는 저걸 처리안하고 콘솔 4부터 처리하는거야. 그리고 이번에서는 파일을 읽는 모듈을 배웠는데 파일을 읽는 모듈을 사용하려면 require로 fs라는 파일시스템 모듈을 불러와야한다.
        그리고 fs라는 변수에 저걸 넣으면 fs변수로 파일입출력에 있는 메소드들을 사용할수가 있는거지
        그리고 다큐먼트에가서 저 메소드는 어떻게 쓰는건가 본다음에 인자들을 각각 맞게 지정해주면된다..
        복습개꿀
      • 일단 동기는 순서대로 일을 처리하지 만약에 동기화로 Async 의 코드를 실행시켰다면 2가 나오고 fs.readfile 이 함수가 내부적으로 일을 다 처리할떄 까지 console.log(4)는 신경을 안쓸거야 그리고 저 일이 다 처리가 된다음에 이제 console4를 처리하겠지. 근데 비동기는 저런 작업같은게 있으면 다른데로 줘버린다고 생각해 그러면
        다른데서 저게 처리가 되고있겠지 근데 나는 저걸 처리안하고 콘솔 4부터 처리하는거야. 그리고 이번에서는 파일을 읽는 모듈을 배웠는데 파일을 읽는 모듈을 사용하려면 require로 fs라는 파일시스템 모듈을 불러와야한다.
        그리고 fs라는 변수에 저걸 넣으면 fs변수로 파일입출력에 있는 메소드들을 사용할수가 있는거지
        그리고 다큐먼트에가서 저 메소드는 어떻게 쓰는건가 본다음에 인자들을 각각 맞게 지정해주면된다..
        복습개꿀
      • 일단 동기는 순서대로 일을 처리하지 만약에 동기화로 Async 의 코드를 실행시켰다면 2가 나오고 fs.readfile 이 함수가 내부적으로 일을 다 처리할떄 까지 console.log(4)는 신경을 안쓸거야 그리고 저 일이 다 처리가 된다음에 이제 console4를 처리하겠지. 근데 비동기는 저런 작업같은게 있으면 다른데로 줘버린다고 생각해 그러면
        다른데서 저게 처리가 되고있겠지 근데 나는 저걸 처리안하고 콘솔 4부터 처리하는거야. 그리고 이번에서는 파일을 읽는 모듈을 배웠는데 파일을 읽는 모듈을 사용하려면 require로 fs라는 파일시스템 모듈을 불러와야한다.
        그리고 fs라는 변수에 저걸 넣으면 fs변수로 파일입출력에 있는 메소드들을 사용할수가 있는거지
        그리고 다큐먼트에가서 저 메소드는 어떻게 쓰는건가 본다음에 인자들을 각각 맞게 지정해주면된다..
        복습개꿀
      • 일단 동기는 순서대로 일을 처리하지 만약에 동기화로 Async 의 코드를 실행시켰다면 2가 나오고 fs.readfile 이 함수가 내부적으로 일을 다 처리할떄 까지 console.log(4)는 신경을 안쓸거야 그리고 저 일이 다 처리가 된다음에 이제 console4를 처리하겠지. 근데 비동기는 저런 작업같은게 있으면 다른데로 줘버린다고 생각해 그러면
        다른데서 저게 처리가 되고있겠지 근데 나는 저걸 처리안하고 콘솔 4부터 처리하는거야. 그리고 이번에서는 파일을 읽는 모듈을 배웠는데 파일을 읽는 모듈을 사용하려면 require로 fs라는 파일시스템 모듈을 불러와야한다.
        그리고 fs라는 변수에 저걸 넣으면 fs변수로 파일입출력에 있는 메소드들을 사용할수가 있는거지
        그리고 다큐먼트에가서 저 메소드는 어떻게 쓰는건가 본다음에 인자들을 각각 맞게 지정해주면된다..
        복습개꿀
      • 일단 동기는 순서대로 일을 처리하지 만약에 동기화로 Async 의 코드를 실행시켰다면 2가 나오고 fs.readfile 이 함수가 내부적으로 일을 다 처리할떄 까지 console.log(4)는 신경을 안쓸거야 그리고 저 일이 다 처리가 된다음에 이제 console4를 처리하겠지. 근데 비동기는 저런 작업같은게 있으면 다른데로 줘버린다고 생각해 그러면
        다른데서 저게 처리가 되고있겠지 근데 나는 저걸 처리안하고 콘솔 4부터 처리하는거야. 그리고 이번에서는 파일을 읽는 모듈을 배웠는데 파일을 읽는 모듈을 사용하려면 require로 fs라는 파일시스템 모듈을 불러와야한다.
        그리고 fs라는 변수에 저걸 넣으면 fs변수로 파일입출력에 있는 메소드들을 사용할수가 있는거지
        그리고 다큐먼트에가서 저 메소드는 어떻게 쓰는건가 본다음에 인자들을 각각 맞게 지정해주면된다..
        복습개꿀
      • 일단 동기는 순서대로 일을 처리하지 만약에 동기화로 Async 의 코드를 실행시켰다면 2가 나오고 fs.readfile 이 함수가 내부적으로 일을 다 처리할떄 까지 console.log(4)는 신경을 안쓸거야 그리고 저 일이 다 처리가 된다음에 이제 console4를 처리하겠지. 근데 비동기는 저런 작업같은게 있으면 다른데로 줘버린다고 생각해 그러면
        다른데서 저게 처리가 되고있겠지 근데 나는 저걸 처리안하고 콘솔 4부터 처리하는거야. 그리고 이번에서는 파일을 읽는 모듈을 배웠는데 파일을 읽는 모듈을 사용하려면 require로 fs라는 파일시스템 모듈을 불러와야한다.
        그리고 fs라는 변수에 저걸 넣으면 fs변수로 파일입출력에 있는 메소드들을 사용할수가 있는거지
        그리고 다큐먼트에가서 저 메소드는 어떻게 쓰는건가 본다음에 인자들을 각각 맞게 지정해주면된다..
        복습개꿀
      • 일단 동기는 순서대로 일을 처리하지 만약에 동기화로 Async 의 코드를 실행시켰다면 2가 나오고 fs.readfile 이 함수가 내부적으로 일을 다 처리할떄 까지 console.log(4)는 신경을 안쓸거야 그리고 저 일이 다 처리가 된다음에 이제 console4를 처리하겠지. 근데 비동기는 저런 작업같은게 있으면 다른데로 줘버린다고 생각해 그러면
        다른데서 저게 처리가 되고있겠지 근데 나는 저걸 처리안하고 콘솔 4부터 처리하는거야. 그리고 이번에서는 파일을 읽는 모듈을 배웠는데 파일을 읽는 모듈을 사용하려면 require로 fs라는 파일시스템 모듈을 불러와야한다.
        그리고 fs라는 변수에 저걸 넣으면 fs변수로 파일입출력에 있는 메소드들을 사용할수가 있는거지
        그리고 다큐먼트에가서 저 메소드는 어떻게 쓰는건가 본다음에 인자들을 각각 맞게 지정해주면된다..
        복습개꿀
      • fasdgoc
        대화보기
        • Async Call은 무조건 다른 것들 실행이 다 끝난 다음에 처리되나요?
        • 보보
          동기와 비동기 2장 14분 20초 경에 비슷한 설명을 해주셨는데
          개인적으로는 그런 설명이 더 와닿는것 같습니다.
          파일 읽는데 20분이 걸리는데 동기방식이면 그 동안 아무런 일도 못하니
          비동기 방식으로 처리해야 한다는 말씀이요ㅎㅎ
          대화보기
          • 보보
            비동기 설명을 이런식으로 하면 어떨까요?

            빨래 설거지 청소 예를 들었는데 대행업체에 위임하는 예보다
            빨래 할때 세탁물을 세탁기에 넣고, 세탁 버튼을 누른 뒤 세탁이 완료되기 까지 시간이 많이 남는데,
            그 시간동안 동기방식이면 설거지를 할 수 없고 그럼 자원이 낭비되겠지요.
            그런 낭비를 막기 위해서 비동기적 처리가 필요한거구요.

            설거지도 마찬가지로 식기세척기를 이용한다면 식기세척기가 돌아가는 동안 마찬가지로 청소를 할 수 있겠죠.
            그리고 빨래가 다 됐을때는 세탁기가 다 됐다고 소리로 알려주니 그 소리를 듣고 다시 돌아가서 세탁물을 가지고와 널면되니 동기적으로 하나씩 처리하는 것보다 말씀하신것처럼 순서가 상관없는 이런 작업에서는 비동기적 방식이 여러 작업을 유휴자원 없이 효율적인 처리가 가능하기 때문에 선호되는게 아닌가 싶습니다.

            개인적으로는 위임에 포커스를 두는 것보다 자원의 활용 면에서 포커스를 두는게 더 맞지 않나 생각합니다. 자원을 최대한 효율적으로 사용해야 프로그램도 빠르니까요.

            좋은 강의 항상 감사드리며 잘 보고 있습니다!
          • Eric Yong Yeon Kim
            비동기 설명 아주 재미있습니다.. 안드로이드나 아이폰에 주로 비동식의 프로그램 중요성을 조금 포함해주시면 좋을거 같습니다. 아무래도 클라언트 엔지니어 꿈꾸느 분을 위해
          버전 관리
          egoing
          현재 버전
          선택 버전
          graphittie 자세히 보기