库“dart:isolate”中是否有 dart 的 `spawnUri(...)` 示例?

2023-12-04

有一个spawnUri(uri)函数于dart:isolate,但我没有找到任何例子。我猜到了它的用法,但失败了。

假设有2个文件,在第一个文件中,它会调用spawnUri对于第二个,并与之沟通。

首先.dart

import "dart:isolate";

main() {
  ReceivePort port = new ReceivePort();
  port.receive((msg, _) {
    print(msg);
    port.close();
  });
   var c = spawnUri("./second.dart");
   c.send(["Freewind", "enjoy dart"], port.toSendPort());
}

第二个.dart

String hello(String who, String message) {
   return "Hello, $who, $message";
}

void isolateMain(ReceivePort port) {
  port.receive((msg, reply) => reply.send(hello(msg[0], msg[1]));
}

main() {}

但这个例子不起作用。我不知道正确的代码是什么,如何解决?


这是一个适用于 Dart 1.0 的简单示例。

应用程序.dart:

import 'dart:isolate';
import 'dart:html';
import 'dart:async';

main() {
  Element output = querySelector('output');

  SendPort sendPort;

  ReceivePort receivePort = new ReceivePort();
  receivePort.listen((msg) {
    if (sendPort == null) {
      sendPort = msg;
    } else {
      output.text += 'Received from isolate: $msg\n';
    }
  });

  String workerUri;

  // Yikes, this is a hack. But is there another way?
  if (identical(1, 1.0)) {
    // we're in dart2js!
    workerUri = 'worker.dart.js';
  } else {
    // we're in the VM!
    workerUri = 'worker.dart';
  }

  int counter = 0;

  Isolate.spawnUri(Uri.parse(workerUri), [], receivePort.sendPort).then((isolate) {
    print('isolate spawned');
    new Timer.periodic(const Duration(seconds: 1), (t) {
      sendPort.send('From app: ${counter++}');
    });
  });
}

工人.dart:

import 'dart:isolate';

main(List<String> args, SendPort sendPort) {
  ReceivePort receivePort = new ReceivePort();
  sendPort.send(receivePort.sendPort);

  receivePort.listen((msg) {
    sendPort.send('ECHO: $msg');
  });
}

构建过程分为两步:

  1. pub build
  2. dart2js -m web/worker.dart -obuild/worker.dart.js

在这里查看完整的项目:https://github.com/sethladd/dart_worker_isolates_dart2js_test

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

库“dart:isolate”中是否有 dart 的 `spawnUri(...)` 示例? 的相关文章

随机推荐

  • Xcode 首选项 -> 帐户未保存

    一般在Xcode我们可以在偏好设置中保存不同的苹果帐户 它之前在之前的所有版本中都可以工作 上周我更新了Xcode并安装了Xcode version 10 0然后我添加了 3 4 个 Apple ID Xcode gt 首选项 gt 帐户
  • Swift:多个目标处理:宏不起作用[重复]

    这个问题在这里已经有答案了 从参考如何使用 swift 语言处理 XCode 中的多个目标 and https www appcoda com using xcode targets 我创建了三个目标 每个目标都有不同的包 ID 和应用程序
  • 如何将 Google Mock 与 CppUnitTestFramework 结合使用

    TL DR 您可以使用 GMock 向 Microsoft 本机 C 单元测试添加模拟功能 看我的答案请参阅下文了解详细信息 我想开始向我现有的一组本机单元测试添加模拟 这些测试是使用 Microsoft 编写的CppUnitTestFra
  • PHP pthread 中的对象变量丢失上下文

    我在 PHP 中使用 pthreads 并注意到 pthreads 在其上下文中丢失了对象变量 这是正常的还是错误 或者我做错了什么 class Downloader extends Thread private ch public fun
  • 嵌套函数或方法调用会降低应用程序的性能

    我正在使用 asp net 和 C 开发应用程序 其中我们的项目架构有很多嵌套函数调用 public Employe GetEmployeOrder orderid employe GetEmployeOrderWithDetails or
  • 在 Freemarker 模板中显示 Spring MVC 验证错误

    如果控制器返回绑定错误 我试图在我的 freemarker 模板中显示全局验证错误列表 我可以显示与字段关联的错误 但我想检测特定 bean 中何时发生错误并在页面顶部显示一条消息 我尝试使用下面的示例 但它不产生任何输出 lt sprin
  • Windows 和 Linux 之间的 C++ 可移植性

    我有一个关于编写可在 Windows 和 Linux 之间移植的程序的问题 最近我意识到 如果你编写一个使用任何类型的外部库的程序 如果该库没有 Linux 版本 或者在 Linux 中开发时没有 Windows 版本 那么你就完蛋了 那么
  • 如何使用 .htaccess url 重写添加 .php 扩展名?

    我已经在我的网站上设置了 htaccess 文件 该文件将 SLUG 文本显示为 URL 中的页面名称 但不带扩展名 例如真实网址是 www mywebsite com page php page about us 然后通过url重写加载到
  • 尝试使用 pygame.display.update 在 pygame 中显示 png 文件,它显示不到一秒然后消失。

    图像是一张扑克牌 我们使用的是 pygame 4 5 社区版和 pycharm 2 6 9 因为 2 7 不支持 pygame 这是学校 这是代码 import pygame pygame init picture pygame image
  • Pandas:如何通过以下方式连接数据帧?

    我想将多个数据帧连接成一个数据帧 我希望发生串联的方式如以下示例所示 Input tables A B C D 0 x p 2 4 1 y q 3 5 A B E F 0 x p 6 8 1 y q 9 10 Output table A
  • 如何将文本对象添加到现有的pdf中

    我有一个源 pdf 我正在通过添加文本对象来修改它 我正在使用 PDF 规范中提到的 增量更新 但是 在使用此方法添加文本对象时 我犯了一些错误 导致 pdf 在 Adob e Reader 11 中无法正确呈现 当打开 pdf 并双击它时
  • 将扫描仪类与 GUI 一起使用

    我使用 java swing 创建 GUI 并使用扫描仪类获取从 JTextFields 输入到服务器的信息 这可能吗 如果可能的话怎么办 不 没有控制台 因此不要使用 Scanner 相反 您可以使用 TextField 的 getTex
  • 如何使用 BeginInvoke 从 BackgroundWorker 更新 RichTextBox

    我有一个小应用程序 它读取管道分隔文件并将行写入 RTB 突出显示某些 列 中是否存在不允许的字符 这工作得很好 但是 用户想要一个进度条 并看到 实时 写入的行 并且能够中途取消 我有以下扩展方法 我一直用它来写入 RichTextBox
  • Neo4jClient Cypher 查询的排序顺序不正确

    我有以下 Neo4jClient 代码 var queryItem graphClient Cypher Start new n Node ByIndexLookup myindex Name sku Match p n r Relatio
  • 当 SSRS 中的数据不存在时填充“0”

    我正在尝试在 SSRS 中创建一个报告 其中有一个矩阵 其中性别作为列标题 专门定义的年龄组作为行 该报告按日期排序 即 显示的记录按 modifedAt 值过滤 我的问题是 我希望显示所有年龄组类别 即使数据集不返回该行的任何数据 因此
  • 有没有一个网站可以让我查看不同浏览器支持哪些 HTML 5 标签?还有WebGL?

    我想制作一个 HTML Javascript 网络应用程序 有没有一个网站可以比较哪些浏览器已经支持 HTML5 标签 还有WebGL 是的 有很多 以下是每个人的几个 HTML http a deveria com caniuse HTM
  • 如何查询到Firestore子文档

    我正在开发一个应用程序 我想查询 Firestore 子文档 让我进一步解释一下 我有一组存储汽车的文档 每个文档都有一辆带有描述的特定汽车 在上面的每个文档中 我都有一个名为的子集合user data它有自己的文档 其中存储了将汽车添加到
  • C#.NET 线程问题

    我面临 C NET 应用程序中线程之间通信的问题 希望有人能指导我找到可能的解决方案的正确方向 我有一个 C NET 中的应用程序 它是一个 Windows 窗体应用程序 我的应用程序有两个线程 一个线程是主线程 UI 线程 另一个线程是子
  • J表。删除行。消耗事件以不再进一步分派

    我需要按删除键从 JTable 中删除行 所以用例非常简单 用户选择一些行 按删除键 行就会被删除 代码也很简单 DefaultTableModel tableModel DefaultTableModel table getModel i
  • 库“dart:isolate”中是否有 dart 的 `spawnUri(...)` 示例?

    有一个spawnUri uri 函数于dart isolate 但我没有找到任何例子 我猜到了它的用法 但失败了 假设有2个文件 在第一个文件中 它会调用spawnUri对于第二个 并与之沟通 首先 dart import dart iso