gpt4 book ai didi

javascript - 如何从网络 worker 内部访问对象元素数据?

转载 作者:行者123 更新时间:2023-11-28 01:44:43 25 4
gpt4 key购买 nike

我目前正在学习网络工作人员,我需要在工作人员中进行一些计算,这不会阻碍浏览器中的流程。

目前我有一个 ajax 调用,它返回一个包含多个数据 block 的 xml 数据结构,如下所示:

<data>
<sub1>
<sub2>
<sub3>
</data>
<data>
<sub1>
<sub2>
<sub3>
</data>

然后我从这个数据结构创建一个对象,如下所示:

var node = $(xml).find(data);

然后我将对象字符串化以传输给工作人员,如下所示:

var toPass = JSON.stringify(node);

然后我将此变量 (toPass) 发送给工作人员,如下所示:

worker.postMessage(toPass);

到目前为止,所有这些工作正常,我遇到的问题是尝试访问工作人员内的数据。

所以在 worker 中我这样做:

onmessage = function (oEvent) {

var node = JSON.parse(oEvent.data);

for(var = 0; i < node.length; i++){

var sub1 = node[i].find('sub1').text();

}

};

我面临的问题是尝试访问“sub1”、“sub2”和“sub3”数据。

我可以看到我正在尝试错误地访问数据,因为我使用的是 XML.find 方法,我觉得在将数据解析为 JSON 对象后,我对数据感到困惑。

有人可以告诉我如何正确访问“node[i]”中的数据元素吗?

最诚挚的问候。

最佳答案

好的,

我想这里学到的教训是永远不要假设任何事情。

当我这样做时: var node = $(xml).find('data'); 我认为它返回了一个对象数组,其中包含每个标签内的所有子标签,但是我错了,我返回了一个数组(长度正确),但每个数组都包含空对象,这就是为什么我无法访问网络工作人员中的数据。

为了解决这个问题,在我将数据请求发送给工作人员之前,我首先像这样循环 xml 文件:

var node = $(xml).find('data');

var nodeArray = [];

for (var i=0; i<node.length; i++){

var sub1 = $(node[i]).find('sub1').text();
var sub2 = $(node[i]).find('sub2').text();
var sub3 = $(node[i]).find('sub3').text();


var tojsonObj = {'sub1':sub1,'sub2':sub2,'sub3':sub3};

nodeArray.push(tojsonObj);
}

worker.postMessage(nodeArray);

这样我不需要解析任何东西,因为工作人员可以接受数组(仅在 ff 中测试)

要在工作人员中访问所有这些数据,我这样做:

onmessage = function (oEvent) {

var nodeArray = oEvent.data;



for(var i = 0; i < nodeArray.length; i++){

var sub1 = nodeArray[i].sub1;
var sub2 = nodeArray[i].sub2;
var sub3 = nodeArray[i].sub3;

}

};

现在我可以访问数据了,我可以在循环内用它做我喜欢做的事情,这样我就可以在浏览器中释放一些处理时间。

现在我只需要处理它并弄清楚如何返回它。

关于javascript - 如何从网络 worker 内部访问对象元素数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20475133/

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