2016-09-06 8 views
5

We wszystkich przykładach widziałem, są one podobne do tegoDlaczego zdarzenie SharedWorker onConnect ma tablicę portów?

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(); 
} 

Czy istnieje instancja gdzie tablica porty nigdy mieć więcej niż jeden element? Korzystanie z chrome: // wglądu na SharedWorker i drukowanie e, mam

MessageEvent

niezależnie od tego, ile przypadki są zrodził dzielenie się SharedWorker, gdzie długość wynosi zawsze 1. Dlaczego nie jest to tylko MessageEvent zamiast tablicy? Jaki jest przypadek użycia tablicy?

Odpowiedz

2

Powodem jest to, że używa on ponownie interfejsu MessageEvent, który może czasem zostać wysłany z tablicą wielu portów. To wszystko.

+0

i jakie są tego przypadki? używając websockets? Jestem niesamowicie ciekawy. –

+0

Używając 'window.postMessage' możesz przekazać tablicę portów w argumencie' transfer'. Zobacz https://html.spec.whatwg.org/multipage/comms.html#introduction-12 https://html.spec.whatwg.org/multipage/comms.html#ports-as-the-basis- model-możliwości-obiektu-w-Internecie – zcorpan