使用 Stream.periodic 时如何取消 Stream?

2023-12-26

我无法取消使用 Stream.periodic 构造函数创建的流。以下是我取消流的尝试。但是,我很难从内部范围中提取“count”变量。因此,我无法取消订阅。

import 'dart:async';

void main() {
  int count = 0;
  final Stream newsStream = new Stream.periodic(Duration(seconds: 2), (_) {
    return _;
  });

  StreamSubscription mySubscribedStream = newsStream.map((e) {
    count = e;
    print(count);
    return 'stuff $e';
  }).listen((e) {
    print(e);
  });

  // count = 0 here because count is scoped inside mySubscribedStream
  // How do I extract out 'count', so I can cancel the stream?
  if (count > 5) {
    mySubscribedStream.cancel();
    mySubscribedStream = null;
  }
}

我宁愿使用take(5)而不是检查> 5然后取消

final Stream newsStream = new Stream.periodic(Duration(seconds: 2), (_)  => count++);

newsStream.map((e) {
    count = e;
    print(count);
    return 'stuff $e';
  }).take(5).forEach((e) {
    print(e);
  });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Stream.periodic 时如何取消 Stream? 的相关文章

随机推荐

  • GNU make 不删除中间文件

    我的makefile如下 The names of targets that can be built Used in the list of valid targets when no target is specified and wh
  • 自动弹出标题,无延迟

    是否有机会执行 js onclick 函数 如果有人自动单击该图标 则会显示标题文本 或者当有人将鼠标移到其上时 标题将立即显示 现在元素的标题会在 1 秒后出现 你可以试试这个 纯css 没有js HTML div class hover
  • 什么是可标记元素?

    我已经阅读无障碍 http www w3 org TR aria in html fifth rule of aria use我偶然发现了一个我找不到准确信息的概念 HTML 可标记元素 我知道可标记元素背后的概念是可以由
  • 检查文件是否包含光栅或矢量元素? (pdf、eps、ai)

    有没有办法检查文件中是否包含光栅元素 我有兴趣对 pdf eps 和 ai 格式执行此操作 如果文件只是矢量 我将其转换为 svg 如果它有一些光栅元素 我必须将其转换为 png 文件 我正在使用 PHP 但我也可以使用任何命令行工具 例如
  • dict.viewkeys() 返回的数据类型是什么? [ 蟒蛇 2.7 ]

    我在学习dict viewkeys 今天 我发现我的python调用了它dict keys目的 我可以将其视为可迭代对象 但它不是生成器 因为我可以多次迭代它 以我有限的知识 我只知道String int float list dict t
  • html5画布kineticjs事件

    我似乎在使用事件获取时遇到问题动力学JS http kineticjs com以 1 或更小的行程在 Kinetic Line 上开火 我认为将所有行添加到一个组 然后将事件附加到一个组就足够了 但它不起作用 我已经简化了我想要完成的代码以
  • 重定向回同一页面时 CakePHP 缓存问题

    我正在使用 CakePHP 2 6 当我重定向回发出请求的同一视图时 我遇到了问题 该视图似乎已被缓存 因此在请求期间所做的任何更改都不会显示 直到再次刷新页面 这意味着 用户无法看到刚刚所做的更改 Flash 消息显示在下列的视图 这很糟
  • Vuetify 外部分页不显示页码

    我有一个 v data table 我正在尝试为其添加分页 我已按照示例文档进行操作here https vuetifyjs com en components data tables example paginate我看不出我做错了什么
  • 使用布尔运算符在 Z3 中定义约束

    比方说 我想使用 Z3 约束将字符串的每个字符限制为字符集 a zA Z0 9 我可以使用布尔运算符来指定吗 举个例子 input BitVec input s i 8 for i in range 10 for i in range 10
  • Shiny:如何在禁用操作按钮的情况下启动应用程序?

    我需要启动一个禁用 button2 的应用程序 仅应在按下 button1 后启用 我怎样才能做到这一点 我正在尝试使用启用 禁用shinyjs包裹 我可以在按 button1 后启用 button2 但是如何在禁用 button2 的情况
  • 代码更改后如何在没有 mvn clean install 的情况下构建项目?

    我在 eclipse 中有一个项目 一个带有 appengine sdk 和 maven 作为我的构建器的 java 应用程序 在我启动全新安装之前 class 文件不会刷新 因此我在代码中所做的每项更改都必须运行 mvn 干净安装 mvn
  • Maven 程序集插件:包含文件而不获取其路径文件夹

    我使用 maven assemble plugin 将依赖项 ZIP 也使用程序集插件生成 中的文件包含到最终版本 ZIP 文件中 问题是我想从依赖项中选择要获取的文件 但不复制这些文件所在的文件夹路径 只是文件 例如
  • 使用 Google Maps API 检索“商家”?

    这是一个例子 它附加了一些元素 例如 Reviews来自各个网站 qype viewlondon 等 Details由各个网站提供 Photos and other content 我不知道如何继续检索此类业务并关联我的网站上生成的任何项目
  • 使用AlwaysUseFullPath 属性了解使用DispatcherServlet 的URL 映射

    我尝试将 DispatcherServlet 中的 URL 配置为映射到不带扩展名的 URL 我终于明白了这一点 但我不明白为什么 URL 会这样工作 假设上下文为 foobar 如果 DispatcherServlet 的 url 模式为
  • GetValue、GetConstantValue 和 GetRawConstantValue 之间的区别

    两者有什么区别GetValue GetConstantValue and GetRawConstantValue上的方法PropertyInfo班级 不幸的是 MSDN 文档对这个主题不是很清楚 Both GetConstantValue
  • Xamarin - 跨平台单元测试

    我正在整合我的团队开发环境 为我们的第一个大型 Xamarin Forms 项目做好准备 从敏捷的角度涉及整个团队 在继续之前我需要验证一个假设 单元测试 我们计划使用适用于 Android 和 Windows Phone 的 TFS 以及
  • 使用 ARC 在 Lion 上查看基于 NSTableView EXC_BAD_ACCESS

    这很奇怪 我有一个超级简单的项目来学习 NSTableView 它在我的笔尖中设置 设置为基于视图的 tableView 我还设置了数据源并委托给我的控制器对象 然而 当我这样做并运行时 我得到一个 EXC BAD ACCESS 跟踪从我的
  • AlarmManager.setExact() 在错误的时间启动?

    我安排挂起的意图在 5 秒内发送 但它在 23 秒内开始 API 19 AlarmManager setExact 10 23 16 43 44 638 11903 11903 D MainActivity Fri Oct 23 16 43
  • 格子,仅当连接具有正斜率时才连接点

    仅当连接具有正斜率时 是否有一种舒适的方法来连接点 否则该函数的行为应与 xyplot 完全相同 library lattice dat lt data frame x 1 10 y sample 1 10 xyplot y x data
  • 使用 Stream.periodic 时如何取消 Stream?

    我无法取消使用 Stream periodic 构造函数创建的流 以下是我取消流的尝试 但是 我很难从内部范围中提取 count 变量 因此 我无法取消订阅 import dart async void main int count 0 f