2016-09-06 4 views
5

In allen Beispielen, die ich gesehen habe, sind sie diesenWarum hat das SharedWorker onConnect-Ereignis ein Ports-Array?

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

Gibt es ein Beispiel, wo die Ports Array wird immer mehr als ein Element hat? Mit chrome: // auf dem SharedWorker inspizieren und e Ausdrucken, erhalte ich

MessageEvent

unabhängig davon, wie viele Instanzen hervorgebracht werden die SharedWorker teilen, wobei die Länge immer 1. Warum nicht, es ist nur ein MessageEvent anstelle eines Arrays? Welchen Anwendungsfall gibt es, um ein Array zu sein?

Antwort

2

Der Grund ist, dass es die MessageEvent Schnittstelle wiederverwendet, die manchmal mit einem Array von mehreren Ports ausgelöst werden kann. Das ist alles.

+0

und welche Fälle wäre das? mit Websockets? Ich bin super neugierig. –

+0

Mit 'window.postMessage' können Sie im Argument' transfer' ein Array von Ports übergeben. Siehe https://html.spec.whatwg.org/multipage/comms.html#introduction-12 https://html.spec.whatwg.org/multipage/comms.html#ports-as-the-basis- von einem Objekt-Fähigkeit-Modell-im-Web – zcorpan

Verwandte Themen