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

Flutter如何实现至少延迟2秒且总耗时不超2秒的任务处理?

解决方案

你的问题核心是串行任务导致总耗时叠加,原代码先等待2秒延迟,再执行Firestore查询,总耗时为两者之和。要实现并行执行,让延迟和查询任务同时启动,总耗时就会被最长的任务(2秒延迟)覆盖。

修改后的代码如下:

DateTime beforeDate = DateTime.now();
try {
  // 同时启动延迟任务与Firestore查询任务
  final results = await Future.wait([
    Future.delayed(Duration(seconds: 2)),
    FirebaseFirestore.instance
        .collection('news')
        .where('id', isEqualTo: id)
        .get()
  ]);
  
  QuerySnapshot snapshot = results[1];
  DateTime afterDate = DateTime.now();
  print(afterDate.difference(beforeDate).inMilliseconds); // 约2000毫秒
  return NewsModel.fromJson(snapshot.docs.first.data());
} catch (ex) {
  print('ex: $ex');
  rethrow;
}

关键说明:

  • Future.wait()会同时触发传入的所有Future任务,等待所有任务完成后才继续执行后续逻辑
  • 延迟任务的2秒时长覆盖了查询的0.373秒耗时,最终总耗时约等于2秒
  • 异常处理逻辑保持原有逻辑,任何一个任务抛出异常都会被try-catch捕获并重新抛出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 16:00:59