Flutter,在一定时间内实现一个方法

Flutter, implement a method within a certain time

提问人:Jood Alk 提问时间:11/16/2023 更新时间:11/17/2023 访问量:50

问:

如何在一定时间内实现一个方法,如果时间到了,取消该方法

例如

如果我有一个可能需要 5 秒才能完全实现的方法,并且我希望它在 3 秒内实现,如果这 3 秒过去了并且该方法没有完成,那么请取消它

这可能吗?

flutter dart 异步 async-await 同步

评论

0赞 Md. Yeasin Sheikh 11/16/2023
ig 您可以使用 Timer、Stopwatch 或 CancableOperation
0赞 pskink 11/16/2023
check Future.timeout - 文档说:“timeLimit 过后停止等待这个未来”

答:

1赞 Ravi Patel 11/17/2023 #1

是的,可以实现一种机制来在特定时间范围内执行方法,并在花费太长时间时取消它。Dart 提供了一个 Future 类和 Future.timeout 构造函数,它允许你为 future 操作设置超时。

下面是如何实现此目的的示例:

import 'dart:async';

void main() {
  // Call the method with a timeout of 3 seconds
  executeMethodWithTimeout().then(
    (result) {
      print('Method completed successfully: $result');
    },
    onError: (error) {
      print('Method did not complete within the specified time: $error');
    },
  );
}

Future<String> longRunningMethod() async {
  // Simulate a long-running task
  await Future.delayed(Duration(seconds: 5));

  // Return a result when the task is complete
  return 'Task completed successfully!';
}

Future<String> executeMethodWithTimeout() async {
  try {
    // Use Future.timeout to set a timeout of 3 seconds
    String result = await longRunningMethod().timeout(Duration(seconds: 3));
    return result;
  } on TimeoutException {
    // Handle the timeout
    throw 'Timeout: Method took longer than 3 seconds to complete';
  }
}

评论

0赞 starball 11/21/2023
在撰写这篇回答文章时,您是否使用了任何生成式 AI?