Dartのthen

thenは非同期処理を書くときに使うメソッドです。async/awaitも非同期処理を書く時に使うので意味は同じになります。

同じ意味と知らず業務でthenとawaitを一緒に使っていたので反省です...。どちらか一つを使いましょう。

thenを使った例

void main() {
print(DateTime.now());
futureTest().then((result) {
print(result);
});
}

Future<String> futureTest() {
return Future.delayed(Duration(seconds: 3), () {
return DateTime.now().toString();
});
}

すると3秒後に処理が実行されています。

2021-02-23 11:35:57.660
2021-02-23 11:36:00.665

async/awaitを使った例

void main() async {
print(DateTime.now());
var result = await futureTest();
print(result);
}

Future<String> futureTest() {
return Future.delayed(Duration(seconds: 3), () {
return DateTime.now().toString();
});
}

ちゃんと3秒後に出力されています

2021-02-23 11:43:02.639
2021-02-23 11:43:05.647

thenよりasync/awaitを使った方が可読性が高いという記事がありました。業務ではどちらも使用しているので今後thenとasync/awaitが出てきた時はどんな場面で使用しているのか注目したいです。

この記事が気に入ったらサポートをしてみませんか?