面试题答案
一键面试- 创建Web Worker文件:
- 创建一个新的JavaScript文件(例如
worker.js
)。在这个文件中,通过self.onmessage
事件来接收主脚本传递过来的数据。例如:
self.onmessage = function(event) { const data = event.data; // 执行复杂计算,假设这里有heavyCalculation函数,实际要根据具体计算逻辑实现 const result = heavyCalculation(data); self.postMessage(result); };
- 创建一个新的JavaScript文件(例如
- 在Solid.js组件中与Web Worker进行通信:
- 在Solid.js组件中,首先要创建Web Worker实例。例如:
import { createSignal } from'solid-js'; const MyComponent = () => { const [result, setResult] = createSignal(null); const worker = new Worker(new URL('./worker.js', import.meta.url)); worker.onmessage = function(event) { setResult(event.data); }; const performCalculation = (inputData) => { worker.postMessage(inputData); }; return ( <div> {/* 假设有一个按钮触发计算 */} <button onClick={() => performCalculation({ someData: 'example' })}>计算</button> {result() && <p>计算结果: {result()}</p>} </div> ); }; export default MyComponent;
- 这里先通过
new Worker
创建Web Worker实例,指定Web Worker文件的路径。然后通过worker.onmessage
接收Web Worker返回的计算结果并更新Solid.js的信号result
。performCalculation
函数负责向Web Worker发送数据,触发计算。