(二十五)WebWorker进阶
1:WebWorker与主线程通信
-
通信内容
字符串
对象
二进制
...
任何Javascript可以表示存储的内容
-
通信是拷贝关系
-
二进制数据转移 - 转移之后当前线程无法操作
webWorker.postMessage(arrayBuffer, [arrayBuffer]);
2:执行同页面的WebWorker
未知的Script类型 - 代码不会执行
<script id="samePageWorker" type="unknow">
addEventListener('message', () => {
postMessage('send message!');
}, false);
</script>
二进制读取并开启新的WebWorker
const blob = new Blob([document.getElementById('samePageWorker').text]);
const url = URL.createObjectURL(blob);
/* 获取保存在内存中的文件地址 */
const webWorker = new Worker(url);
webWorker.postMessage(123);