1

我正在寻找将飞镖脚本交叉编译为 JS,在网络工作者中运行。

我的 JS 脚本应该是这样的:

myScript.js

postMessage("I\'m working before postMessage(\'ali\').");

onmessage = function (oEvent) {
  postMessage("Hi " + oEvent.data);
};

如何构建我的飞镖代码来做到这一点?

将这两个函数直接放在我的 javascript 的顶部很重要,以便能够在工作程序中运行。谢谢

4

2 回答 2

1

我不确定以前有人试过这个。所以你应该!

dart.js 是启动 Dart VM(如果可用)并设置 js-interp 的脚本,它没有多大用处,因为它中的很多都访问了 worker 中不可用的对象,而且你不需要启动虚拟机。

所以我的猜测是你需要做的就是用 dart2js 编译代码并在你的 worker 调用中直接引用 app.dart.js :

new Worker("dart_worker.dart.js");

然后在 dart_worker.dart.js 中注册window.onMessage事件并window.postMessage正常调用。

希望如果您不使用不允许的 DOM 对象,例如documentdart2js 不会生成会在工作进程中失败的代码。

让我们知道这是否有效!

于 2013-04-20T18:27:39.317 回答
0

我试过这个:

dart_worker.dart

void main() {

  window.onMessage.listen( (event) => onData);

}

void onData(){
  var a = 10 + 25;
}

测试工作者.html

<script>
        var a = new Worker('dart_worker.dart.js');
        a.postMessage('yeaaaah');
    </script>

Chrome 报告我的飞镖脚本有一个脚本错误:未捕获的非法参数:命令

我的代码有问题吗?

于 2013-04-24T10:22:34.770 回答