Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

데블스캠프2017/Promise패턴으로쉽게하는비동기프로그래밍: Difference between revisions

From ZeroWiki
No edit summary
No edit summary
Line 4: Line 4:
* Promise 패턴에 대한 것보다는, 필요한 이유가 무엇인가?
* Promise 패턴에 대한 것보다는, 필요한 이유가 무엇인가?
** 단순히 소개하는 것보다는, 더 기억에 오래 남을 수 있는 방법을 위해.
** 단순히 소개하는 것보다는, 더 기억에 오래 남을 수 있는 방법을 위해.
** Promise는 말 그대로 약속을 뜻한다.
* 프로젝트 홍보 ~~(?)~~
* 프로젝트 홍보 ~~(?)~~


== 동기 프로그래밍과 비동기 프로그래밍 ==
== 동기 프로그래밍과 비동기 프로그래밍 ==
* 동기 프로그래밍(Sync)은 순서대로, 차례대로 주르륵 실행하는 방식.
** 우리 모두가 알고 있는 바로 그 방식.
* 비동기 프로그래밍(Async)은 순서를 알 수 없음.
** 네트워크 통신이나, GUI 상에서의 버튼 클릭의 반응 타이밍에 대해 생각해보자.
** 병렬 프로그래밍을 하다보면 익숙해지는 그 방식.
** 시간이 오래 걸리는 작업에 대해, 비동기를 사용하면 작업 실행 중 다른 작업을 수행할 수 있으므로 CPU 시간을 아낄 수 있다.
== 예시 ==
* 철수와 짱구가 있다.
** 철수가 10원을 주며 짱구에게 빵을 사오라고 시킨다.
** 짱구는 어느 시점(언제인지는 정확히 알 수가 없다.)에 빵을 사서 철수에게 돌려준다.
** 똑같이 철수가 10원을 주며 짱구에게 빵을 사오라고 시킨다.
** 짱구는 초코비가 먹고 싶었기 때문에, 마음대로 초코비를 사서 철수에게 돌려주었다.
*** ???
*** 오류 발생!
** 철수가 장난감을 짱구에게 빌려준다.
** 짱구가 장난감을 가지고 놀다가 철수에게 돌려준다.
** 철수가 맹구에게 장난감을 빌려주고, 맹구는 마찬가지로 장난감을 가지고 놀다가 철수에게 돌려준다.
*** 단순히 비동기 함수 두 개를 구현하면, 동시에 콜백이 실행될 경우 문제가 생긴다!
*** 콜백 안에 비동기 함수 하나를 집어넣자.
*** 그런데, 비동기 함수의 개수가 훨씬 많이 늘어난다면...
**** 콜백 지옥!
**** 오류 처리, 특정 로직을 구현하는 것이 미친듯이 어려워진다.
**** Promise 패턴을 사용하면, 과도한 인덴트/엄청난 중복의 오류 처리 없이도 여러 겹의 콜백을 처리할 수 있다!
== 사용 이유 ==
* Promise 패턴은 궁극적으로 콜백 지옥을 해결할 수 있다.
* 여러 비동기를 한 번에 처리하는 것이 가능하며, 예외 처리를 매우 쉽게 구현할 수 있다.
* 기존 콜백 구조를 Promise로 전환하는 것이 쉽다.
* Fetch API가 Promise로 구현되었으며, 표준이 되었으므로 웹을 개발한다면 피해갈 수 없다.
* 더 알고 싶으면 bluebirdjs.com!
== Selenium ==
*



Revision as of 10:24, 28 June 2017

개요

  • Promise 패턴에 대한 것보다는, 필요한 이유가 무엇인가?
    • 단순히 소개하는 것보다는, 더 기억에 오래 남을 수 있는 방법을 위해.
    • Promise는 말 그대로 약속을 뜻한다.
  • 프로젝트 홍보 ~~(?)~~

동기 프로그래밍과 비동기 프로그래밍

  • 동기 프로그래밍(Sync)은 순서대로, 차례대로 주르륵 실행하는 방식.
    • 우리 모두가 알고 있는 바로 그 방식.
  • 비동기 프로그래밍(Async)은 순서를 알 수 없음.
    • 네트워크 통신이나, GUI 상에서의 버튼 클릭의 반응 타이밍에 대해 생각해보자.
    • 병렬 프로그래밍을 하다보면 익숙해지는 그 방식.
    • 시간이 오래 걸리는 작업에 대해, 비동기를 사용하면 작업 실행 중 다른 작업을 수행할 수 있으므로 CPU 시간을 아낄 수 있다.

예시

  • 철수와 짱구가 있다.
    • 철수가 10원을 주며 짱구에게 빵을 사오라고 시킨다.
    • 짱구는 어느 시점(언제인지는 정확히 알 수가 없다.)에 빵을 사서 철수에게 돌려준다.
    • 똑같이 철수가 10원을 주며 짱구에게 빵을 사오라고 시킨다.
    • 짱구는 초코비가 먹고 싶었기 때문에, 마음대로 초코비를 사서 철수에게 돌려주었다.
      • ???
      • 오류 발생!
    • 철수가 장난감을 짱구에게 빌려준다.
    • 짱구가 장난감을 가지고 놀다가 철수에게 돌려준다.
    • 철수가 맹구에게 장난감을 빌려주고, 맹구는 마찬가지로 장난감을 가지고 놀다가 철수에게 돌려준다.
      • 단순히 비동기 함수 두 개를 구현하면, 동시에 콜백이 실행될 경우 문제가 생긴다!
      • 콜백 안에 비동기 함수 하나를 집어넣자.
      • 그런데, 비동기 함수의 개수가 훨씬 많이 늘어난다면...
        • 콜백 지옥!
        • 오류 처리, 특정 로직을 구현하는 것이 미친듯이 어려워진다.
        • Promise 패턴을 사용하면, 과도한 인덴트/엄청난 중복의 오류 처리 없이도 여러 겹의 콜백을 처리할 수 있다!

사용 이유

  • Promise 패턴은 궁극적으로 콜백 지옥을 해결할 수 있다.
  • 여러 비동기를 한 번에 처리하는 것이 가능하며, 예외 처리를 매우 쉽게 구현할 수 있다.
  • 기존 콜백 구조를 Promise로 전환하는 것이 쉽다.
  • Fetch API가 Promise로 구현되었으며, 표준이 되었으므로 웹을 개발한다면 피해갈 수 없다.
  • 더 알고 싶으면 bluebirdjs.com!

Selenium