gpt4 book ai didi

javascript - 我可以生成一个 Web Worker 并将 JavaScript 函数从父级 "process"注入(inject)其中吗?

转载 作者:行者123 更新时间:2023-12-02 16:57:22 24 4
gpt4 key购买 nike

是否可以生成一个 Web Worker,并以某种方式从父线程将 JavaScript 函数注入(inject)其中? IE。不必让工作人员包含文件,而是我希望父级以某种方式注入(inject)它。

最佳答案

一种选择是通过常用 channel 发送函数代码并使用构造函数 new Function() (或 eval() )重新创建该函数。

在这两种情况下,您都应该检查实际传输的内容,以防止安全风险。

主脚本

// your function given as arguments and code
var funktion = {
args: ['a', 'b' ],
source: 'return a + b;'
};

// send it to your worker
worker.postMessage( funktion );

worker

self.addEventListener( 'message', function( msg ){

// build array for constructor arguments
var args = [ null ].concat( fk.a, fk.c );

// create function
var yourFunc = new (Function.prototype.bind.apply(Function, args));

// use yourFunc
});

这使用了 Function 构造函数的动态使用,如 this answer 中所述。 .

<小时/>

使用 eval() 可能会更简单,具体取决于您如何获取函数代码:

主脚本

// your function given as arguments and code
var funktion = "function add(a,b){ return a + b; }";

// send it to your worker
worker.postMessage( funktion );

worker

self.addEventListener( 'message', function( msg ){      

// create function
var yourFunc = eval( "(function(){ return " + funktion + "; })()" );

// use yourFunc
});

关于javascript - 我可以生成一个 Web Worker 并将 JavaScript 函数从父级 "process"注入(inject)其中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26068502/

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