Node.js

Node.js - 동기와 비동기 그리고 콜백

수업소개

Node.js에서 매우 중요한 특징인 비동기  처리 방식을 살펴봅니다. Node.js 실행순서를 파악하는 것이 목적입니다. 

 

 

 

동기와 비동기 1

강의

 

 

 

 

소스코드

 syntax/sample.txt

B

syntax/sync.js

var fs = require('fs');

/*
//readFileSync
console.log('A');
var result = fs.readFileSync('syntax/sample.txt', 'utf8');
console.log(result);
console.log('C');
*/


console.log('A');
fs.readFile('syntax/sample.txt', 'utf8', function(err, result){
    console.log(result);
});
console.log('C');

 

 

 

 

동기와 비동기 2

강의

 

 

 

callback

강의

 

 

 

소스코드

/*
function a(){
  console.log('A');
}
*/
var a = function(){
  console.log('A');
}


function slowfunc(callback){
  callback();
}

slowfunc(a);

 

댓글

댓글 본문
  1. CH Yim
    완료
  2. vampa
    2020.09.09
  3. 마준
    완료
  4. 모라토리움
    콜백은 함수속에 함수 인셉션 같은거라 생각하면 되는건가요?
  5. 누누
    2020.08.01 완료
  6. 코딩하는렌즈쟁이
    2020-07-27 (월)
    완료
    콜백
  7. 코딩중독
    비동기적은 약간 성급하다? 라고 표현할 수 있을 것 같네요.
  8. 불스택
    그저 빛 !!! 갓고잉님 감사합니다 !!
  9. 영호팍
    이해 완료!!@!!!
  10. Amousk
    좋은 강의 감사합니다.
  11. Katherine Roh
    완료 :)
  12. 김재익
    완료
  13. 김보미
    완료
  14. 바다의왕자
    완료
  15. 암말
    함수 안에 callback을 parameter로 지정하고, 함수를 실행하면서 변수로 지정된 다른 함수를 argument로 설정하면, 자신이 원하는 타이밍에 함수를 실행시킬 수 있는 callback을 사용할 수 있는건가요?
  16. bomnie
    콜백 함수를 사용하면 특정 로직이 끝났을 때 원하는 동작을 실행시킬 수 있다.
  17. Eunsung Shin
    완료
  18. 콜백 개념 바로잡기
  19. 애매했던 콜백이라는 개념이 명료하게 이해되었습니다.
    감사해요!
  20. CarryKim
    비동기에서 콜백 개념을 아주 명쾌하게 설명해 주셔서 감사합니다.
  21. 준바이
    감사합니다
  22. 심여수
    감사합니다.
  23. 03.10 완료
  24. eddylee123456
    복습
  25. 임효석
    조흔말씀
    대화보기
    • 마운틴고릴라
      보긴 봤는데요 버튼 아이디어는 정말 천재적이라고 생각합니다 정말로 보기는 봤는데요... 개념이 잡힐듯말듯알듯말듯한 이 기분... 동기와 비동기는 비교적 쉽게 이해했는데 callback에서 언제나 막히네요....
    • jimmyzip
      덧붙여보자면 순서에 '상관없이' 실행되어야 할 때 적극 활용하면 좋습니다.
      가정) 도미XX션즈를 하고 있습니다. 기지에 딸린 부두에서 원정을 보내면 정해진 시간 뒤에 선박이 복귀하며 각종 보물을 가져다줍니다.

      비동기식 처리의 개념이 없다면? 그리고 원정이 2일짜리라면??
      원정을 보내는 순간 '게임 실행부'가 2일간 기다렸다가 보물을 획득하는 연산을 마쳐야 마을에서 할 수 있는 다른 행위를 할 수 있게 됩니다. 병력생산이나 전투기능은 마비되죠??

      보물 원정을 비동기로 처리한다면?
      원정을 보내놓고, 마을에서 할 수 있는 다른 행위 실컷하다가 2일 뒤에 보물 받으면 되죵.

      원정 한 번 보냈다고
      마을 내 행위가 원정복귀를 기다리고나서 실행되어야 한다면(메인이 마비된다면)
      유저들 화딱지나서 다 게임 접습니다 ^^
      이 경우 원정은 반드시 비동기로 처리되어야 합니다.

      동기와 비동기는 요러한 경우를 따져서 선택적으로 사용하기도 합니다.
      대화보기
      • eddylee123456
        완료
      • Gritter
        현실에서도, 너 이거 먼저 한 다음에 저거 해! 라는 말을 시키는 입장에서 많이 하게 되는데,
        자바스크립트는 컴퓨터에게 이러한 지시를 'callback'이라는 기능으로 하는군요.
      • import.위드
        callback이란 익명함수로 함수를 생성하고,

        그 함수를 다른 함수 내부에서 실행하게 하는것이다.
      • 스티븐잡숴
        완료
      • 임은정
        완료
      • JT_brand
        오늘도 정말 잘 보고 갑니다 감사요~~!!
      • 쑤우
        수강완료.감사합니다~
      • 굼벵이
        완료
      • CronEB
        완료
      • YesterdayKite
        완료. 감사합니다!
      • 이이이이이뻐
        //만약 시간이 오래걸리는 slowfunc라는 함수가 있다고 치자
        //이 기능이 끝난 다음에
        //이 시간이 오래 걸리는 함수가 종료된 후에
        //그 다음일을 하세요 라고 하고 싶다면
        //이 함수가 인자로 callback을 받으면 된다.
        //그리고 나서 callback을 실행해 주면 됨
        function slowfunc(callback){
        callback();
        }
        //이렇게 되면 slowfunc가 실행이 되고 callback이라는 parameter는
        //어떤 값을 갖냐면 a 가 가르키는 저 함수를 갖게 됨.
        //이 안에서 callback 이라는 함수를 호출하면
        //a가 실행이 됨

        slowfunc(a);
      • ㅇ0ㅇ
        완료
      • youngjin.lee
        Completed
      • 허공
        190510 감사합니다.
      • 이루
        완료
      • 위준우
        완료
      • kdsprj
        async await, Promise 방법이 있습니다.
        짧은 견해로 답변 드려요. 자세한 사항은 아래 링크를 참고해주세요 :)
        - async function
        https://developer.mozilla.org......ion
        - Promise
        https://developer.mozilla.org......ise
        - [번역] async/await 를 사용하기 전에 promise를 이해하기
        https://medium.com......4a4
        - [Async, 비동기와 동기] Promise에서 Await까지
        https://velog.io......%80
        대화보기
        • 자유로움
          완료
        • 0cool
          직접 비동기 방식으로 함수를 만들고 싶으면 어떤 식으로 해야 할까요? 혹시 아시는 분 있나요?
        • supernet
          완료
        • 이채
          보긴봤어요 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ두세번 돌려봐야 비로소 봤어요를 누를 수 있겠네요ㅠㅠ
          대화보기
          • 지미츄
            감사합니다~
          • 호두
            고맙습니다.
          버전 관리
          egoing
          현재 버전
          선택 버전
          graphittie 자세히 보기