Open ChangJoo-Park opened 6 years ago
자바스크립트에서 비동기 프로그래밍이 필요한 경우 사용하는 async - await 는 Dart에도 동일하게 존재합니다. 비동기 함수는 Future 또는 Stream 객체를 리턴합니다.
Future는 자바스크립트와 유사합니다. .then
으로 결과를 처리하고 오류가 발생한 catchError
또는 onError
를 사용합니다.
async - await를 사용하는 Dart 와 자바스크립트 차이는 아래와 같습니다.
Future checkVersion() async {
var version = await lookUpVersion();
// Do something with version
}
const checkVersion = async function() {
var version = await lookUpVersion();
// Do something with version
}
리턴 타입을 명시하지 않는 자바스크립트와 거의 유사합니다. 함수 선언부의 async 위치만 다르고, 리턴 타입만 적혀있습니다.
위 내용은 자바스크립트의 Promise의 일반 사용예와 같습니다.
Stream 은 다음 상황에 사용합니다.
서버에 한번에 여러 요청을 보낼 때 await for
를 이용합니다.
Promise.all
과 유사해보입니다
Future main() async {
// ...
await for (var request in requestServer) {
handleRequest(request);
}
// ...
}