gpt4 book ai didi

javascript - 有没有一种方法可以在一个文件中拥有不同的工作函数

转载 作者:行者123 更新时间:2023-11-29 16:45:14 24 4
gpt4 key购买 nike

阅读有关网络 worker 的内容时,我偶然发现了这个 example来自MDN。 worker.js 只是一个简单的函数。因此,当我们向工作人员发布消息时,工作人员就会启动 onmessage 部分。在这个简单的例子中, worker 只需将两个数字相乘。但是如果我想要一个可以加法、除法等的工作程序怎么办?我是否需要为我希望工作人员运行的每个函数创建一个新的工作人员文件(例如 worker_add.js)?或者什么是更干净的方法来处理这个问题?

我正在考虑将一个字符串作为第一个参数发布给工作人员

myWorker.postMessage(["method", arg1, arg2]);

然后在我的工作线程中,我有 if/else 条件,它检查字符串是否匹配,然后执行不同的代码。

importScripts('emscripten.js')

onmessage = function(e) {
console.log('Message received from main script.');
if (e.data[0] == "method1")
{
Module.method1(e.data[1].byteOffset, e.data[2]);
postMessage(e.data[1]);
}

else if (e.data[0] == "method2")
{
var ret= Module.method2();
postMessage(ret);
}

console.log('Posting message back to main script');
}

最佳答案

我认为除了在消息本身中传递一些元数据之外,没有更好的方法来完成您想要的事情。

但是您的实现可以轻松改进。不使用 switcher,而是始终将第一个参数视为函数名称,所有其他参数都是该函数的参数,并且函数结果直接回发:

onmessage = function(e) {
postMessage(Module[e.data[0]].apply(Module, e.data.slice(1)));
}

简单的一行,它关心工作线程中任意数量的函数。

如果工作函数结果是异步的,您可以检查函数结果是否为例如Promise 并在 Promise resolve 上发布消息,而不是直接发布消息。

关于javascript - 有没有一种方法可以在一个文件中拥有不同的工作函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42131232/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com