`new Promise(` should be seen as a bridge, used only for interfacing with 
asynchronicity that does not use promises. (Such as Nodebacks, setTimeout, or 
older DOM interfaces.) Otherwise you can just return the promise and chain off 
of it, or await it. (There are some other use cases, such as writing promise 
combinators, but they are fairly advanced; "library code" and not "application 
code.")

As such I don't think it's fruitful to introduce new syntax to help these 
cases. It's fine for them to have the extra few characters and indentation 
level. The focus should instead be on replacing such older interfaces with 
promise-returning ones.

From: es-discuss [mailto:es-discuss-boun...@mozilla.org] On Behalf Of Mark 
Volkmann
Sent: Sunday, March 30, 2014 09:06
To: es-discuss@mozilla.org
Subject: await and promise

I looked at the "async" keyword examples in Traceur for the first time today. 
Cool stuff!

IIUC, when a function is annotated with the async keyword, it can use "await" 
and the "done" function is magically defined.

An interesting corollary to that idea would be to introduce a "promise" keyword 
that can be used to annotate a function. It would magically define the 
functions "resolve" and "reject". It would allow a function like this:

function foo() {
  return new Promise((resolve, reject) => {
    // some code that eventually calls resolve or reject
  });
}

to be written like this:

promise function foo() {
  // some code that eventually calls resolve or reject
}

Is this a crazy idea? Perhaps if this was available, it would be very rare to 
actually write "new Promise(" in code.

--
R. Mark Volkmann
Object Computing, Inc.
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to