indexOf()
가 단순한 케이스 하나를 정확하게 처리한다고 주장하는 하나의 테스트가 있습니다.describe()
호출들은 JUnit와 같은 더 오래된 테스트 프레임워크에서 나오는 시험 케이스들과 유사하며, it()
호출들은 개별 시험들입니다. 그래서 Mocha의 async/await 지원은 it()
함수가 promise를 반환하는 함수를 인수로 받아드릴 수 있는 가지에 달려 있습니다.await
이상을 수행하도록 합니다. async/await은 loop를 사용한 데이터 스트리밍에 대한 아주 명쾌한 대안들을 내놓고 있습니다.next()
함수를 가지는 객체입니다. 기본적으로 이 함수는 다음 문서나 문서가 없다면 null
값을 해결값으로 가지는 promise를 반환합니다. Async/await가 없었다면, next()를 사용하는 커서를 통한 데이터의 반복적 획득은 재귀호출을 사용해야 합니다. 하지만 Async/await 덕분에 한 번의 for 반복문을 사용하는 커서로 데이터를 획득할 수 있습니다.for
반복문 내부에서 await
를 수행할 수 있습니다. 이런 패턴이 좀 더 직관적이며 재귀나 스트림 이용보다 커서를 통한 반복적 접근이 성능 기준에 맞는 방법입니다.render()
함수들은 async 가 될 수 없습니다. async render()
를 사용하면 React는 "Objects are not valid as React child" 오류를 냅니다. 하지만 앞으로 나올 React의 미정의 API에서 바뀔 수도 있습니다.componentWillMount()
를 호출합니다. 아래 코드는 "Hello, World!"를 보여주는 HTML을 생성합니다. 첫 render() 호출 전에 componentWillMount()
가 먼저 수행되기 때문입니다.componentWillMount()Hook
은 async 함수를 다루지 않습니다. 아래 코드는 비어있는 문서를 생성합니다.componentWillMount()
에서 발생하는 오류를 처리하지도 않습니다.componentWillMount()
가 브라우저에서 수행되기는 하지만 오류를 처리하지도, .catch()
로 들어갈 방법도 없습니다.redux-thunk
는 async action 생성자에서 발생한, 오류를 처리하지 못합니다. 하지만 action 생성자는 class 메서드와 반대되는 함수이기 때문에 example 4.8과 같은 wrapper 함수를 이용해서 오류를 처리할 수 있습니다. React, Redux를 위해, Wrapper 함수는 여러분의 UI가 처리할 수 있도록 오류 action을 dispatch()
로 처리해야만 합니다.schedule()
를 설명한 문서입니다. schedule()
는 라이브러리 관점에서 async/await을 지원할까요?schedule(when, name, [data], [cb])
주어진 시간에 name 이름의 작업을 한번 수행하는 스케쥴을 만듭니다.
when은 Date 또는 tomorrow at 5pm 같이 String 타입이 될 수 있습니다.
data는 job.attrs.data로 함수에 전달되는 선택적 파라미터 입니다.
cb는 작업이 database에 머물러 있을 때 호출되는 선택적 콜백 함수입니다.
job을 반환합니다.
schedule
은 jobs
배열을 반환합니다.onmessage
가 async라면 onmessage
내부에서 발생한 오류를 처리하지 못합니다.onmmessage()
를 감싸는 (wrapper)함수를 작성하세요. 이 때 내부에서 발생하는 오류들은 콜솔로 출력하세요.