Dart Futureクラス

Future

  • 非同期処理を簡潔に扱うための仕組み
  • 他の言語では、プロミス と呼ばれる
1
2
3
4
5
6
7
8
9
repository.fetchUser(100).then((User user) {
return repository.fetchCompany(user.companyId);
}).then((Company company) {
// 成功時の処理
}).catchError(error) {
// エラー時の処理
}).whenComplete() {
// どちらかが終わったら呼ばれる
});

async/await

  • Futureクラスの記述の可読性をあげるシンタックスシュガー
  • 戻り値は、Future型でないと利用できないので注意
  • 上のコードを以下のように書く事が出来る
1
2
3
4
5
6
7
8
9
10
11
Future<String> findCompanyName(int userId) async {
try {
var user = await repository.fetchuser(userId);
var company = await repository.fetchCompany(user.companyId);
return company.name;
} catch(error) {
// エラー時の処理
} finally {
// 終了時の処理
}
}

コメント

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×