2014-06-30 51 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化它,但是這給了我一個沒有循環引用錯誤。 –