- From: Jan-Ivar Bruaroey <jib@mozilla.com>
- Date: Fri, 01 May 2015 22:28:52 -0400
- To: Peter Thatcher <pthatcher@google.com>
- CC: "Cullen Jennings (fluffy)" <fluffy@cisco.com>, "public-webrtc@w3.org" <public-webrtc@w3.org>
- Message-ID: <55443664.8000001@mozilla.com>
On 5/1/15 7:28 PM, Peter Thatcher wrote: > As both an implementor and an application developer (perhaps even more > an application developer), I want the API to be as simple as possible. Great, because earlier you said you wanted to: - allow return values, async and sync, whether you needed them now or not, just in case. - allow async errors. That did not sound like the simplest API possible. I want the API to be as simple as possible for the application developer. > And having to reason about when effects take place across multiple > property assignments doesn't sound fun at all, with magic stuff > happening underneath to keep it atomic is invariably going to lead to > surprising behavior that's hard to reason about. It's not magic, it's the JavaScript event-loop. JS values are sent to the underlying implementation after a dispatch. Lets reason about your API: var params = foo.getParameters(); params.bar = "big"; params.fum = " deal"; foo.setParameters(params).then(() => log("all set!")); // Have effects taken place here? var params2 = foo.getParameters(); // what's returned? log(JSON.stringify(params) == JSON.stringify(params2)); // true? params2.bar = "never"; params2.fum = "mind"; foo.setParameters(params2).then(() => log("all set!"))) // What effects have taken place here? I suspect it's non-deterministic, producing surprising behavior on every run. > I prefer to keep it simple with one method. I prefer no method(s). Here's mine: foo.bar = "big"; foo.fum = " deal"; // No effects have taken place foo.bar = "never"; foo.fum = "mind"; // No effects have taken place Promise.resolve().then(() => { // Effects have taken place }); setTimeout(() => { // Effects have taken place }); // No effects have taken place Highly deterministic. .: Jan-Ivar :.
Received on Saturday, 2 May 2015 02:29:22 UTC