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

问题描述 投票:0回答:1

如何在一定时间内执行一个方法,如果超时,则取消该方法

例如,

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

这可能吗?

flutter dart asynchronous async-await synchronization
1个回答
0
投票

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

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

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';
  }
}

© www.soinside.com 2019 - 2024. All rights reserved.