2016-09-06 16 views
5

Trong tất cả các ví dụ tôi đã nhìn thấy, họ là tương tự như sauTại sao sự kiện SharedWorker onConnect có một mảng Ports?

onconnect = function(e) { 
    var port = e.ports[0]; 

    port.onmessage = function(e) { 
     var workerResult = 'Result: ' + (e.data[0] * e.data[1]); 
     port.postMessage(workerResult); 
    } 

    port.start(); 
} 

Có một ví dụ nơi mảng cổng bao giờ sẽ có nhiều hơn một yếu tố? Sử dụng chrome: // kiểm tra trên SharedWorker và in ra e, tôi nhận được

MessageEvent

bất kể có bao nhiêu trường hợp được sinh ra chia sẻ SharedWorker, nơi chiều dài luôn là 1. Tại sao không phải là nó chỉ là một MessageEvent thay vì một mảng? Trường hợp sử dụng nào có cho nó là một mảng?

Trả lời

2

Lý do là nó sử dụng lại giao diện MessageEvent đôi khi có thể được gửi đi với một loạt các cổng. Đó là tất cả.

+0

và trường hợp nào sẽ là? sử dụng websockets? Tôi siêu tò mò. –

+0

Sử dụng 'window.postMessage' bạn có thể truyền vào một mảng các cổng trong đối số' transfer'. Xem https://html.spec.whatwg.org/multipage/comms.html#introduction-12 https://html.spec.whatwg.org/multipage/comms.html#ports-as-the-basis- của một đối tượng-khả năng-mô-hình-trên-web – zcorpan

Các vấn đề liên quan