2014-06-30 28 views
1

发送一个对象时,网络工作者postMessage()的好处是它序列化整个对象,包括对象的所有元素本身是对象。所有指向另一个对象的数据都会碰到并重建,指向正确的东西。如何查看发布在Worker.postMessage(myObject)调用中的原始数据?

问题是......确保它只带来我需要的东西。我拉对象链表的一个子集,其中有很多指向对象的指针。即,不仅仅是父对象指向的对象的子元素,还有很多关系指针。

有没有办法查看postMessage()复制的内容?就像看到原始JSON的方式一样?

+0

这不是JSON。引擎将使用一些内部序列化格式。 – Bergi

+0

尝试'onmessage = console.log.bind(console);'在Worker中? – Bergi

+0

@Bergi日志记录它只是给我的对象的外部变量 - “对象{消息:9,subMessage:1,msgGuid:1,网页:阵列[1],成功:undefined ...}” –

回答

0

我的错误。我使用Chrome并忘记了Chrome的console.log与大多数浏览器不同。尝试使用console.dir(object)。

我详细阐述了一下代码。

要登录您的员工发送的内容回主线程...

// will log what your worker is sending back to the main thread 
onmessage = function (e) { console.dir(e.data); } 

要查看主线程发送到工人...

// The worker 
var worker = new Worker('worker.js'); 

// Prepare message for worker 
var message = { 
    colors: ['red', 'blue', 'green'], 
    numbers: [1,2,3] 
}; 

// log it 
console.dir(message); 

// send it 
worker.sendMessage(message) 

而且或许检查this answer看看console.log和console.dir的区别。

+0

我试过,但它只是向我展示同一个对象,所以我必须做同样的事情,遍历所有指针。 –

+0

你能分享你的代码吗?也尝试在Chrome中测试它,并让我知道发生了什么。 –

+0

我在Chrome中尝试过,对于console.dir的console.log(msg)和“Object”,得到了“Object {message:9,subMessage:1,msgGuid:1,pages:Array [1],success:undefined ...}” ()。该代码是不可共享的,因为有很多,它是专有的。我试图JSON化它,但是这给了我一个没有循环引用错误。 –