我正在创建一个用Dart编写的Web应用程序,该程序需要创建也用Dart编写的独立执行路径。 (如果我们不在浏览器中工作,我将其称为“线程”。)

通常,我会使用Dart(非常健壮)的隔离来执行此任务,但是我的局限性在于,我需要能够在没有它们的合作的情况下随时任意终止任何这些“线程”。

如果有人好奇,那是因为必须在这些“线程”中运行不受信任的第三方代码,并且如果它们没有响应以及其他原因,我必须能够终止它们。

据我了解,使用dart:isolate是不可能的。 (对?)

无论如何,我已经成功地使用dart2js将一些Dart代码编译为Javascript并在Worker中执行了,但是我不知道如何像JS中那样正确调用postMessage函数并响应onmessage事件。我弄乱了dart2js的内部结构,并设法对其进行了调整(特别是js_backend的东西),以便能够从我的代码中执行postMessage函数,但是用Dart处理程序响应onmessage事件超出了我的理解dart2js的工作原理。

我查看了js.dart库,但这通过在页面上创建脚本标签而起作用,这显然在工作程序中是不可能的。

我知道这是一个很奇怪的用例,但是没有人知道我将如何利用dart2js的内部结构来响应和回复给工作人员的消息吗?

最佳答案

Worker 类似乎支持您想要的内容。

  • 您可以使用 postMessage 向其发送消息
  • 您可以订阅 onMessage 以接收消息
  • 您可以使用 terminate 终止它
  • 09-25 17:30