You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

是否可在AudioWorklet内部使用new Function()执行动态生成的音频处理算法?

结论

该方案可行。

实现逻辑

  • AudioWorklet运行的独立线程上下文(AudioWorkletGlobalScope)原生支持new Function动态生成函数的语法,没有默认限制动态代码执行能力
  • 你可以通过AudioWorkletNode.port.postMessage()方法,把编译生成的JS代码字符串从主线程传递到对应的AudioWorkletProcessor实例中
  • 在AudioWorkletProcessor的message事件回调或构造函数内,调用new Function(codeString)生成自定义执行函数,挂载到实例属性后,即可在process()方法中直接调用该函数处理音频数据

注意事项

  • 代码字符串通过结构化克隆算法在线程间传递,额外开销极低,不会影响音频渲染性能
  • 若你的部署环境配置了CSP(内容安全策略),需要确保规则中放开了'unsafe-eval'限制,否则new Function的执行会被浏览器拦截
  • 节点配置变更时,只需重新传递新的代码字符串,在AudioWorklet内部覆盖原有自定义函数即可,无需重新注册AudioWorkletProcessor

内容的提问来源于stack exchange,提问作者dogefromage

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 10:36:03