플러터에서의 future
는 지금은 없지만 미래에 요청할것들이 담긴 '그릇'과 같은것이다. 비동기에 자주 쓰이며 계산즉시 결과를 '완료'하여 반환한다.
import "dart:io";
Future<bool> fileContains(String path, String needle) async {
try {
var haystack = await File(path).readAsString();
return haystack.contains(needle);
} on FileSystemException catch (exception, stack) {
_myLog.logError(exception, stack);
return false;
}
}
함수에 async
가 있고 내부에 await
이 있는데 실행결과에 따라 future
를 반환해야한다. 본 fileContains 함수는 future 문자열이 완료되어야 값을 반환하고 호출할때 했던 원래 future값을 완성하게 된다.
일반적으로 비동기 코드를 작성할때 future가 생성될때마다 항상 기다려야하며, 다음 비동기지연이 끝날때까지 기다리면 안된다. 이는 미래에 발생할 수 있는 모든 오류를 '수신'할 준비가 되어있음을 보장한다.