javascript - 无法从网络工作者那里获取数据
问题描述
我有以下forEach:
hosts.forEach((host) => {
filterByHost(host);
});
如您所见, forEach 调用以下方法,我假装使用网络工作者
function filterByHost(host) {
let sortedHost = [];
const filterHost = data.filter((element) => element.host.includes(host));
if (window.Worker) {
const worker = new Worker('utils.js');
worker.postMessage({ cmd: 'sortHost', filterHost });
worker.onmessage = function (event) {
switch (event.data.cmd) {
case 'sortHost':
servers = {
...servers,
[host]: event.data.data,
};
break;
default:
break;
}
};
}
}
我的 utils.js 文件中的代码如下:
self.addEventListener(
'message',
function (event) {
switch (event.data.cmd) {
case 'uniqueHosts':
postMessage({ cmd: 'other', data: other(event.data.data) });
break;
case 'sortHost':
postMessage({
cmd: 'sortHost',
data: sortHost(event.data.filterHost),
});
break;
default:
break;
}
},
false
);
function other(data) {
return bla bla bla;
}
function sortHost(filterHost) {
return filterHost.sort((a, b) => {
if (a.apdex < b.apdex) {
return 1;
}
if (a.apdex > b.apdex) {
return -1;
}
return 0;
});
}
如您所见,我尝试使用网络工作者来对一大堆对象进行排序,并且该工作者可以工作,它返回一个排序后的数组,但是当我尝试将结果分布在我拥有的服务器和空数组中时,是就像当 forEach 调用新的 Worker 时,每件事都重新启动,我找不到原因
解决方案
推荐阅读
- java - 二叉树广度优先搜索算法
- php - 如何按int对multiD数组进行排序
- sql - 在sql中的某些单词之间选择数字
- google-app-maker - 我需要做什么才能使用 App Maker 设置 Google Cloud SQL?
- python - 不能将序列乘以 2 x 2 numpy 数组的非 int 类型文件
- jquery - jquery调用关闭div的事件
- matlab - MATLAB 无法存储具有多个变量的符号函数
- python - 获取调试:Lua 脚本出现爬网(504)错误,而 Scrapy-Splash 的循环超时
- graphql - Postgraphile 的现场授权级别
- python - 根据python中的条件查找累积和