特定の時間、将来の応答をどのように待ちますか?
たとえば、httpポストリクエストを作成し、その応答を待ってからhttpリクエストを閉じますが、3秒しか待機しない場合は、リクエストを閉じます。
どのようにしてそれを達成しますか?
何かのようなもの
Future makePostReq() async{
....
await http response for 3 secs
....
if(response) {
... Do something with it
}
Http.close
}
Future.any
コンストラクタを使用して競合状態を作ることができます
final result = await Future.any([
Future.value(42),
Future.delayed(const Duration(seconds: 3))
]);
Future.timout
メソッドを使用することもできます
final result = await Future.value(42).timeout(const Duration(seconds: 3));
とても簡単にできます
try {
var response = await Http.get("YourUrl").timeout(const Duration(seconds: 3));
if(response.statusCode == 200){
print("Success");
}else{
print("Something wrong");
}
} on TimeoutException catch (e) {
print('Timeout');
} on Error catch (e) {
print('Error: $e');
}
この例では、タイムアウトを3秒に設定します。 3秒経過しても応答がない場合は、TimeoutException
がスローされます。
これをインポート:
import 'package:http/http.Dart' as Http;
import 'Dart:async';