Dart / Flutter:Isolate 顶级函数的异步行为

2024-01-01

哎呀好人, 我遇到了奇怪的行为

当异步使用isolate的顶层函数时;

你可以找到示例代码HERE https://github.com/iapicca/isolates_logging,但简而言之

as 隔离的顶级功能这有效:

String _syncHandle(int data) {
  return 'done';
}

这不是:

Future<String> _syncHandle(int data) async {
  return 'done';
}

有人能解释一下为什么吗?

(或者如果应该可行,为什么在我的代码中不这样做?)

先感谢您

弗朗西斯科

...

[编辑:刚刚注意到有人问了类似的问题,

尽管如此,仍然没有答案从隔离函数调用异步函数 https://stackoverflow.com/questions/50334869/call-async-function-from-isolate-function%5D,

加上问题开放于github https://github.com/flutter/flutter/issues/30683 ]


忘记更新这个:/ 如果您查看问题中链接的代码

isoles_logging/lib/provider/test_isolate.dart

  Future<void> _handle(int _m) async {
    final response = ReceivePort();
    isolateTest = await Isolate.spawn(_isolate, response.sendPort);
    final sendPort = await response.first as SendPort;
    final answer = ReceivePort();
    sendPort.send([_m, answer.sendPort]);
    await answer.first.then((p) { 
      _outbound.sink.add(p);});
  }

  static void _isolate(SendPort _initialReplyTo) {
    final port =  ReceivePort();
    _initialReplyTo.send(port.sendPort);
    port.listen((message) {
      final data = message[0] as int;
      final send = message[1] as SendPort;
      send.send(_syncHandle(data));
    });
  }
}

Future<String> _syncHandle(int data) async {
  return 'done';
}

注意 send.send(_syncHandle(data));部分

如果你这样做,你只能发送原语而不是期货, 基本上就是这样

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Dart / Flutter:Isolate 顶级函数的异步行为 的相关文章

  • Flutter Google 登录 - 电子邮件信息未发送至 Firebase(返回空白)

    当我在 Flutter 上制作的应用程序中使用 google 登录时 电子邮件以空值返回到 firebase 我在运行时或登录时没有收到任何错误 我对 pubspec yaml 文件上的 google sign in 版本进行了更改 但结果
  • 如何让“material-dropdown-select”显示当前模型值

    使用 AngularDart 角度组件 https github com dart lang angular components 我需要创建一个下拉列表 其中填充了一小部分项目 使其工作 并自动设置为模型中对象的当前选择 尚未使其工作 我
  • 如何知道 Dart 中的复选框或单选按钮是否被选中?

    我有一个复选框和一个单选按钮组 我想知道是否选中了该复选框以及选择了哪个单选按钮 我如何在 Dart 中做到这一点 假设我们有这样的 HTML
  • Flutter - 构建失败并出现异常

    当我启动我的应用程序时 我收到此错误消息 自上次运行以来我没有进行任何更改 当时一切都很好 有人知道如何解决这个问题吗 谢谢 FAILURE Build failed with an exception 什么地方出了错 无法确定任务 app
  • 自定义卡片形状 Flutter SDK

    我在 Flutter 上使用 GridView 开发了一个应用程序 GridView 项目是卡片 默认卡片形状是半径为 4 的矩形 我知道 Card Widget 有 shape 属性 并且它需要 ShapeBorder 类 但我无法找到如
  • 扑。应用程序不会崩溃并发送崩溃报告

    我已经集成了Firebase Crashlytics在我的应用程序中 我正在测试 Android 应用程序 我强迫崩溃来检查它 if true List arr throw arr 1 2 我的问题是应用程序不会崩溃 我只是在日志中得到这个
  • flutter:动画过渡到命名路线

    当我使用Navigator pushNamed context someRoute 有一个最小的动画 从屏幕底部沿着新路线滑动 在 Android 上 在 iOS 上可能看起来不同 如何向此过渡添加自定义动画 I found 本文 http
  • 配置根项目“firebase_auth”时出现问题

    my error 我无法构建 apk 发布文件 我完成了应用程序一段时间 没有出现错误 几天后 我在构建应用程序时收到此错误 请告诉我如何摆脱它 我尝试了 4 个小时 什么也没得到 FAILURE Build failed with an
  • 如何展平列表?

    我怎样才能轻松地压平List在达特 例如 var a 1 2 3 a b c true false true var b 1 2 3 a b c true false true 我该如何转向a into b 即变成一个List包含所有这些值
  • Flutter 网络图像作为 Google 地图标记

    我想在屏幕上的谷歌地图上添加网络图像作为标记 API确实支持一个功能Bitmapdescriptor fromBytes 但是 我不知道如何将它与网络图像一起使用 BitmapDescriptor fromBytes byteData 首先
  • Flutter http请求上传mp3文件

    我使用这个 api 上传 mp3 文件 使用这种方法 Future
  • 从 Rust 中的函数返回异步函数

    第 1 部分 返回异步函数的函数的签名应该是什么 pub async fn some async func arg str What should be sig here pub fn higher order func action st
  • 在 dart 中使用括号表示法访问对象的属性

    我尝试执行以下操作 var properties height width for var prop in properties div style prop otherdiv style prop 但是 dart 似乎不接受这种括号表示法
  • WPF 中的调度程序和异步等待

    我正在尝试学习 WPF C 中的异步编程 但我陷入了异步编程和使用调度程序的困境 它们是不同的还是在相同的场景中使用 我愿意简短地回答这个问题 以免含糊不清 因为我知道我混淆了 WPF 中的概念和函数 但还不足以在功能上正确使用它 我在这里
  • Firebase Analytics 禁用受众国家/地区跟踪

    我正在开发一个严格不允许位置跟踪的应用程序 我想使用 Firebase Analytic 的其他功能 例如 PageTransitions 和 Crashalitics 但如果我无法禁用受众位置跟踪 我就无法使用其中任何功能 这是我在 An
  • 如何实现类似预编译指令的功能

    我正在开发一个 Angular 应用程序 建议对生产中运行的许多东西使用生成的代码 即模板缓存 表达式缓存和静态 DI 注入器 目前没有在不同构建配置之间切换的好方法 因此我使用推荐的模式here https github com angu
  • Flutter 深度链接

    据Flutter官方介绍深层链接页面 https flutter dev docs development ui navigation deep linking 我们不需要任何插件或本机 Android iOS 代码来处理深层链接 但它并没
  • 在 Flutter 中显示 iOS 的 PDF 内联文件

    我正在 flutter 中专门为 iOS 开发一个应用程序 现阶段 我需要向其中添加 PDF 文件 问题是 flutter 没有原生的方式来显示 PDF 文件 据我研究 由此tread https github com flutter fl
  • 等待 IAsyncResult 函数直至完成

    我需要创建等待 IAsyncResult 方法完成的机制 我怎样才能做到这一点 IAsyncResult result contactGroupServices BeginDeleteContact contactToRemove Uri
  • Cloud Functions,删除Firestore SubCollections,是否需要AdminToken?

    我正在尝试构建可调用的云函数 当用户删除帖子时 它也会尝试删除评论 这是帖子的子集合 所以我看到了这个例子并像文档示例一样实现 const admin require firebase admin const firebase tools

随机推荐

  • 实例化新 Android Fragment 的最佳实践

    我见过在应用程序中实例化新片段的两种一般做法 Fragment newFragment new MyFragment and Fragment newFragment MyFragment newInstance 第二个选项使用静态方法ne
  • sizeof- 函数还是宏? [复制]

    这个问题在这里已经有答案了 在c中 我们使用sizeof 用于获取数据类型的大小 所以 它是如何定义的 它是一个宏或一个函数 因为我们可以用两种方式来使用它 sizeof int and sizeof int 那么这是如何在头文件中定义的
  • 将非 ASCII 字符分配给宽字符并使用 printf 打印

    如何将非 ASCII 字符分配给宽字符并将其打印到控制台 这段代码不起作用 include
  • SelectKBest (chi2) 如何计算分数?

    我试图通过将特征选择方法应用于我的数据集来找到最有价值的特征 我现在使用 SelectKBest 函数 我可以生成分值并根据需要对它们进行排序 但我不明白这个分值是如何计算的 我知道理论上的高分更有价值 但我需要一个数学公式或一个例子来计算
  • JMeter 使用 jmx 文件的相对路径上传文件

    我正在 JMeter 中创建一个 HTTP 请求采样器 以自动将文件上传到 http 服务 有没有办法将 通过请求发送文件 中的 文件路径 设置为jmx文件位置的相对路径 是的 这在 JMeter v2 9 中得到了证实 您可以在文件名输入
  • 如何在 SQL Server 2005 Express 中启用全文索引?

    我正在尝试在 SQL Server 2005 Express 中启用全文索引 我在装有 Vista Ultimate 的笔记本电脑上运行此程序 据我所知 标准版本的 SQL Server Express 没有全文索引 我已经下载并安装了 M
  • 从 Rails-geocoder gem 中的控制器获取纬度和经度值

    使用时是否可以在控制器中获取纬度和经度值geocoder https github com alexreisner geocoder宝石在轨道上 目前正在做的获取所有附近位置的操作是传递位置名称 如下所示 event address Eve
  • 在 python 中使用 pandas 检索数据列上的匹配字数

    我有一个df Name Description Ram Ram is one of the good cricketer Sri Sri is one of the member Kumar Kumar is a keeper 和一个清单
  • 提供用于 WhatsApp 链接共享的图像

    当我们分享这样的链接时 如何在我们的网站中添加图片以在 WhatsApp 中显示 2020年标准 只需几个步骤即可获得适用于 PC 和移动设备的 WhatsApp Twitter Facebook 和书签图标的完美预览 如果您喜欢阅读 请前
  • C - 如何实现Set数据结构?

    在 C 中是否有任何棘手的方法来实现集合数据结构 唯一值的集合 集合中的所有元素都属于相同类型 并且有巨大的 RAM 内存 据我所知 对于整数 使用值索引数组可以非常快速且轻松地完成 但我想要一个非常通用的 Set 数据类型 如果一个集合可
  • 在 Iframe 中更改页面的按钮或链接

    我希望在页面中创建一个链接或按钮来更改 iframe 所在的页面 这将是一个本地页面 idreesinc com iframe html 你可以看到我已经在这里 idreesinc com research 非常感谢您的帮助 因为我多年来一
  • 无法运行模拟器 操作无法完成。 (LaunchServicesError 错误 0。)

    我尝试在 Xcode 7 和 swift 2 0 中运行 IOS9 iphone 6 应用程序 但我不能 如果我重置内容和模拟器设置 第一次可以工作 但第二次又失败 我已经清理了应用程序 我已经清理了构建文件夹 我尝试将 NSAllowsA
  • 使用 AuthLogic 保护内容

    我知道这听起来像是一个非常非常简单的用例 我希望确实如此 但我发誓我已经查遍了所有地方 但没有发现任何提及的方法 甚至不是最好的方法 做这个 我对 Ruby Rails 以及与之相关的一切都是全新的 这可以解释为什么lot 我用作学习工具的
  • 使用 Hibernate 持久化长字符串的问题

    在我的 Web 应用程序中 我有一个文本区域 其用户填充的内容最终通过 Hibernate 持久保存到数据库中 我遇到了一个问题 当用户输入超过一定长度时 持久化失败 有没有办法通过 Hibernate Annotations 或在配置中指
  • cpan“Set::IntervalTree”或“Algorithm::ExpectationMaximization”不起作用 - 我在下面解释完整的错误日志

    这里我详细解释一下安装一些 Perl 库时遇到的问题 安装 Set IntervalTree 时遇到问题 我安装了 g 仍然是同样的问题 我安装了 miniconda 并尝试 conda 该包 仍然有同样的问题 这是完整的错误日志 我复制了
  • 禁用 Spring Cloud AWS 自动配置以进行本地开发

    我使用以下 Maven 依赖项 它会自动配置所有必要的参数 使我的项目在 AWS 上运行
  • 从rails日志文件中提取错误信息

    我正在开发 5 个不同的 Rails 项目 另外还重构了一些项目 从旧的 Rails 版本移动到 2 3 从日志文件中提取错误信息的最佳方法是什么 这样我就可以看到所有折旧警告 运行时错误等上 这样我就可以改进代码库了 有没有您可以推荐的服
  • javax.crypto.IllegalBlockSizeException:使用填充密码解密时,输入长度必须是 16 的倍数 [重复]

    这个问题在这里已经有答案了 我在 java 类中遇到解密错误 javax crypto IllegalBlockSizeException Input length must be multiple of 16 when decryptin
  • jQuery 和 PHP 建议答案

    嘿伙计们 有一个表单 用户可以选择他的一些朋友 我很好奇如何实现一个列表 在用户输入朋友的名字时同时进行搜索 当他选择名字时 名字会写在文本框 jQuery 如果用户想要选择多个朋友 当我在数据库中插入姓名时 如何分隔一个输入字段中写入的姓
  • Dart / Flutter:Isolate 顶级函数的异步行为

    哎呀好人 我遇到了奇怪的行为 当异步使用isolate的顶层函数时 你可以找到示例代码HERE https github com iapicca isolates logging 但简而言之 as 隔离的顶级功能这有效 String syn