코드를 짜다보면 비동기함수를 동기처리하여 순차적으로 실행시켜야할 일이 생기기 마련이다. 내가 구현하려했던 동작은 이거였다. //timeout 완료 (1초뒤...) //timeout 완료 (1초뒤...) //timeout 완료 (1초뒤...) //하이 반복문으로 짤수도 있지만, 고차함수로 짜는것이 좀더 가독성이 좋다고 생각해서 처음에는 forEach문을 활용해서 비동기함수를 동기처리해주고자 했다. forEach내부에서 await의 문제 초기 코드를 비동기처리 함수를 기다렸다가 동기적으로 진행하기위해 이런식으로 짰다. const timeout = () => new Promise((resolve) => { setTimeout(() => resolve('timeout 완료'), 1000); }); Array.f..
async
46 제너레이터와 async/await 제너레이터란? ES6에 도입됨 코드 블록 실행을 일시중지했다가 필요한 시점에 재개할 수 있는 특수한 함수 일반함수와의 차이 함수호출자에게 함수 실행 제어권을 양도할 수 있음함수를 부른 함수는 함수 실행을 제어할 수 없다.함수 호출자가 일시중지, 재개가 가능하다는 것 제너레이터 함수는 함수 실행을 함수 호출자가 제어할 수 있다. 일반함수를 호출하면 제어권은 해당 함수에게 넘어간다. 제너레이터 함수는 함수 호출자와 함수 상태를 주고받을 수 있다. 제너레이터 함수를 호출하면 제네레이터 객체를 반환한다. 제네레이터 함수를 호출하면 함수 코드를 실행하는게 아니라 이터러블이면서 동시에 이터레이터인 제너레이터 객체를 반환함 제너레이터 함수의 정의 function*로 선언하며, ..
비동기의 동기처리와 프로미스 프로미스를 통해 비동기메서드는 동기메서드처럼 값을 반환 할 수 있게 된다. 프로미스 생성 프로미스가 이행되거나 거부될때(fulfilled, rejected), 이벤트 큐에 처리된 처리기들이 호출된다. 프로미스는 아래와 같이 객체 형태로 생성할 수 있다. const promise=new Promise(); 프로미스의 상태와 조작 Promise의 인자들을 통해 Promise의 상태를 바꿀 수 있다. 프로미스는 pending, fulfilled, rejected의 세가지 상태를 가진다. 일단 프로미스가 호출되면 프로미스는 Pending상태이다. new Promise의 인자로 resolve와 reject가 있는데, 이 두 함수를 통해 resolve를 실행하면 fulfilled가 되고..