web-dev-qa-db-ja.com

特定の時間の未来を待ちます

特定の時間、将来の応答をどのように待ちますか?

たとえば、httpポストリクエストを作成し、その応答を待ってからhttpリクエストを閉じますが、3秒しか待機しない場合は、リクエストを閉じます。

どのようにしてそれを達成しますか?

何かのようなもの

Future makePostReq() async{
  .... 

  await http response for 3 secs

  .... 

 if(response) {
  ... Do something with it
 }

 Http.close

} 
8
Vidor Vistrom

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));
8
Rémi Rousselet

とても簡単にできます

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';
1
Sanjayrajsinh