非同期な処理の完了を待つ必要がなければ await
をつけずに呼ぶだけでいいです。
void SyncAdd(T event) {
add(event);
非同期な処理();
}
dart:cli を使って CLI を書いているのであれば waitFor
関数を使って Future を同期的に待つことはできますが、実験的な機能であり非推奨です。
それ以外の方法はないと思います。
Like!
Flutterでアプリを作成しています。
その中でFuture<void>を戻り値とする関数を作成しましたが、awaitを付けずに使用する場面は想定されないため、awaitのつけ忘れを防ぐためにも、戻り値をvoidとして、非同期な処理が関数内で完結する同期的な関数にしたいです。
Swift Concurrencyの Taskのようなもので囲めば解決するかもしれませんが、Dartだとそれが何に当たるか分からず、発見できていないのが現状です。
戻り値が Future<void> の関数を voidの関数 にする方法があればご教授ください。
また不可能であればそのことを教えていただけると幸いです。
現状[Future<void>が戻り値]
この関数を呼び出す時にawaitを書く必要があります
Future<void> SyncAdd(T event) async {
add(event);
await 非同期な処理();
}
理想[voidが戻り値]
呼び出し時にawaitを書く必要をなくしたいです。
void SyncAdd(T event) {
// (どうにかして以下2行をasyncで囲みたい) {
add(event);
await 非同期な処理();
// }
}
awaitを使わずに
非同期な処理().then(exit);
で終了することを試しましたが、うまくいきませんでした。
また、Swift Concurrencyの Taskのようなものを探しましたが見つけることはできませんでした。
非同期な処理の完了を待つ必要がなければ await
をつけずに呼ぶだけでいいです。
void SyncAdd(T event) {
add(event);
非同期な処理();
}
dart:cli を使って CLI を書いているのであれば waitFor
関数を使って Future を同期的に待つことはできますが、実験的な機能であり非推奨です。
それ以外の方法はないと思います。
@Ryu-Develop
Questioner