美文网首页
Dart 如何取消future

Dart 如何取消future

作者: 34sir | 来源:发表于2024-07-08 15:29 被阅读0次

三种方式

  • 转Stream
StreamSubscription? a= setSprayWithWheelWithFuture().asStream().listen((event) {
            setSprayWithWheel(right, isForce: true);
          };

a?.canel();

Future setSprayWithWheelWithFuture() async {
    await Future.delayed(Duration(seconds: 1));
  }
  • CancelableOperation
    需要依赖async
await setSprayWithWheelFuture?.cancel();
setSprayWithWheelFuture = CancelableOperation.fromFuture(setSprayWithWheelWithFuture(right));
int? value = await setSprayWithWheelFuture?.value;
print('setSprayWithWheelFuture::value=$value'); //cancel 后 这行之后的代码不会执行 实现原理猜测是寄存器存储了当前执行的位置 类似协程概念
if (value != null) {
setSprayWithWheel(right, isForce: true);
}
  • timeout
    没有上述两种方式灵活以及支持场景不丰富
setSprayWithWheelWithFuture().timeout(
      const Duration(seconds: 1),
      onTimeout: () =>
          'The process took too much time to finish. Please try again later',
);

有哪些场景?
以下是我遇到的场景

  • 固件升级过程的中途取消
  • 设备滚轮控制角度 需要去抖且需要保证最后一条角度数据能够生效

相关文章

  • flutter之---Future的正确用法

    在flutter中经常会用到异步任务,dart中异步任务异步处理是用Future来处理,那么如何实现用Future...

  • flutter Future

    在flutter中经常会用到异步任务,dart中异步任务异步处理是用Future来处理,那么如何实现用Future...

  • Dart中处理异步操作

    Dart中的异步操作使用Future、async、await Future 将耗时操作包裹到Future函数中,一...

  • [Dart] Future

    异步编程 Dart中通过 Future 和 Stream 实现异步,谈论他们之前,先简单了解一下什么叫异步。 As...

  • dart异步

    Dart中的异步 Dart语言的异步编程之Future和async-await是杀手级功能

  • flutter 中的Future方法读取踩的小坑

    flutter dart 语法中 Future其实和js中的Promse 原理是一样的 Future 声明的函数...

  • dart--future

    What's the point?Dart code runs in a single “thread” of e...

  • Dart Future 使用

    自己要做插件了,昨天看了一下Future ,做一下简单的总结,以便后期使用 这是官方地址Dart Future自...

  • 基于FutureBuilder通用网络请求界面封装

    基于FutureBuilder通用网络请求界面封装 Dart异步编程Future 在Dart中,处理异步有两种方式...

  • Dart异步编程-future

    Dart异步编程包含两部分:Future和Stream该篇文章中介绍Future 异步编程:Futures Dar...

网友评论

      本文标题:Dart 如何取消future

      本文链接:https://www.haomeiwen.com/subject/cexacjtx.html