Nov 4, 2008, в 10:08 AM, Aaron Boodman написал(а):

This lack of generality bothers me on an aesthetic level, but I also
think it has the following real problems:

Agreed on all points.

* Add startConversation() to SharedWorker, but rename it "connect()"

Makes sense - when we had other MessagePort methods mirrored to worker global scope, this name was natural, but it no longer is now.

Here's an example in code:

// dedicated workers (outside)
var worker = new Worker("foo.js");
var port = worker.connect();
port.onmessage = function() { }
port.postMessage("ping");

// dedicated workers (inside)
onconnect = function(e) {
 e.port.onmessage = function(e) {
   e.port.postMessage("pong");
 }
}

I think this can be written as (note the different name of MessageEvent attribute, and the use of "this" in onmessage):
onconnect = function(e) {
 e.messagePort.onmessage = function() {
   this.postMessage("pong");
 }
}

In general, one extra line of code doesn't look like a huge downside - this is not something that needs to be done again and again in client code.

Shared workers are exactly the same except the constructor is
SharedWorker("foo.js", "foo");


Is there any benefit in having a different name for this constructor? If dedicated and shared workers are going to have identical implementation (notably, if they have exactly the same lifetime), I don't see any benefit in making them look different.

- WBR, Alexey Proskuryakov


Reply via email to