You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter:当await操作耗时超2秒时执行指定操作(不中断流程)

解决方案

你可以通过同时启动两个异步任务实现需求:一个是原本的错误上报请求,另一个是延迟2秒的检查任务。延迟任务会在2秒后判断原请求是否未完成,若是则执行指定操作,完全不会中断原请求的流程。

示例代码如下:

// 定义需要修改的变量
bool isTimeout = false;

// 先保存原请求的Future对象,不直接await
final reportFuture = _errorReportRepository.sendErrorReport(event.errorReport);

// 启动延迟检查任务
Future.delayed(const Duration(seconds: 2), () {
  // 判断原请求是否仍在执行中
  if (!reportFuture.isCompleted) {
    isTimeout = true;
    // 这里可添加其他需要执行的操作
  }
});

// 正常等待原请求完成,原有流程不受影响
final response = await reportFuture;

代码说明

  • reportFuture 先存储原请求的Future实例,让延迟任务和原请求并行执行
  • Future.delayed 会在2秒后触发回调,通过reportFuture.isCompleted判断原请求状态
  • 若原请求耗时超过2秒,isCompleted为false,此时执行变量赋值等操作;若原请求在2秒内完成,回调内的操作不会触发
  • 最后正常await原请求结果,保证原有业务流程不受干扰

内容的提问来源于stack exchange,提问作者Rami Dhouib

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 15:13:09