👶 TypeScript

👶 TypeScript

비동기 스트림

비동기 스트림 미래의 서로 다른 시점에 이용할 수 있게 될 값이 여러 개라면 어떻게 처리해야 할까요? 이런 상황은 생각보다 자주 발생합니다. 예를 들어 파일 시스템에서 파일의 일부를 읽는 상황, 티빙 서버로부터 비디오 스트리밍의 픽셀들을 받는 상황, 폼을 작성하느라 여러 키를 입력하는 상황, 연말 파티에 수십 명의 친구가 오는 상황 등이 모두 이에 해당한다고 볼 수 있습니다. 각각의 이벤트가 서로 관련 없어 보이지만, 비동기 스트림 관점에선 다들 비슷합니다. 이들은 모두 여러 개의 데이터로 이루어지며, 각각의 데이터를 미래의 어떤 시점에 받게 된다는 점에서 똑같습니다. 몇 가지 방법으로 이런 상황을 설계할 수 있는데, 가장 흔히 NodeJS의 Event Emitter 같은 이벤트 방출기(event emi..

👶 TypeScript

JavaScript의 이벤트 루프

JavaScript의 이벤트 루프 예제를 이용해 아래 문제를 풀어봅시다. 각각 1밀리 초와 2밀리 초 후에 실행되는 두 개의 타이머를 설정했습니다. setTimeout(()=> console.info('A'), 1) setTimeout(()=> console.info('B'), 2) console.info('C') 콘솔엔 어떤 결과가 출력될까요? A, B, C일까요? JavaScript 프로그래머라면, A, B, C가 아니라 C, A, B가 된다는 사실을 알고 있을 것입니다. JavaScript나 TypeScript를 사용해 본 적이 없는 사람이라면 이 결과가 직관적이지 않고 이상해 보일 것입니다. 사실 동작 원리는 간단합니다. JavaScript의 동시성 모델이 C언어의 sleep이나 Java 같은 다..

👶 TypeScript

콜백(callback) 사용하기

콜백(callback) 사용하기 비동기 JavaScript 프로그램의 기본 단위는 콜백(callback)입니다. 콜백은 평범한 함수이며, 다른 함수의 인수 형태로 전달됩니다. 동기 프로그램처럼 특정 함수가 고유한 동작(네트워크 요청 등)을 완료하면 호출자가 건넨 콜백 함수를 호출합니다. 비동기 코드가 호출하는 콜백은 보통의 함수라서 비동기로 호출됨을 알리는 전용 타입 시그니처는 존재하지 않습니다. fs.readFile(디스크의 파일 내용을 비동기로 읽을 때 사용), dns.resolveCname(비동기적으로 CNAME 레코드를 해석할 때 사용) 같은 NodeJS 네이티브 API는 콜백의 첫 번째 매개변수가 에러 또는 null이고 두 번째 매개변수는 결과 또는 null이라는 규칙을 사용합니다. 다음은 re..

👶 TypeScript

async와 await

async와 await Promise는 비동기 코드를 다루는 강력한 추상 개념입니다. 이 패턴이 유명세를 떨치면서 결국 JavaScript도 async와 await라는 형태로 이를 지원하기 시작했습니다. 따라서 자연스럽게 TypeScript도 지원합니다. 이 문법을 이용하면 마치 동기 작업을 다루듯 비동기 작업을 처리할 수 있습니다. await는 .then에 해당하는 언어 수준 문법으로 생각할 수 있습니다. Promise에 await 하려면 반드시 async 블록 안에 있어야 합니다. .catch 대신엔 await를 일반적인 try/catch 블록으로 감싸면 됩니다. 아래와 같이 Promise가 있다고 가정해 보겠습니다. function getMember() { getMemberID(20) .then(u..

개발자 린다씨
'👶 TypeScript' 카테고리의 글 목록 (3 Page)