future는 비동기 메소드로 다른 언어에서도 종종 사용된다고 한다
자바스크립트의 promise 와 비슷한 역할을 하는듯
future 는 상태별로 이벤트 루프에 의해 순차적으로 처리된다
future 객체를 만들 때 타입은 Futrue 와 같이 제네릭을 사용한다
만약 제네릭 타입에 String을 넘겨주면 return 타입도 String이다
future 객체를 만들어서 작업이 시작된 상태가 Uncompleted 상태로
현재 상태를 event queue에 넣고 다음 작업으로 넘어간다
future의 작업 완료 시 then() 이 호출되고 이 때는 Completed 상태이다
then의 첫번째 인자는 콜백함수이고
두 번째 인자는 onError(e)이다
이 때 onError()는 future의 결과값 대신 에러를 가졌을 때에만 동작
.then().catchError() 는 내부 함수에서 발생한 모든 에러를 처리할 수 있다
다트에도 async / await 가 있다
비동기 작업 끼리 동기적 처리를 할 수 있다