ChangJoo-Park / what-to-do

앞으로 해야할 일 또는 생각하는 걸 보관하기 위함
6 stars 0 forks source link

Dart 비동기 #54

Open ChangJoo-Park opened 6 years ago

ChangJoo-Park commented 6 years ago
ChangJoo-Park commented 6 years ago

비동기 프로그래밍

자바스크립트에서 비동기 프로그래밍이 필요한 경우 사용하는 async - await 는 Dart에도 동일하게 존재합니다. 비동기 함수는 Future 또는 Stream 객체를 리턴합니다.

Future는 자바스크립트와 유사합니다. .then으로 결과를 처리하고 오류가 발생한 catchError 또는 onError를 사용합니다.

async - await

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);
  }
  // ...
}