- From: Anne van Kesteren <annevk@annevk.nl>
- Date: Tue, 4 Jun 2013 14:48:35 +0100
- To: Sam Tobin-Hochstadt <samth@ccs.neu.edu>
- Cc: "Tab Atkins Jr." <jackalmage@gmail.com>, "Mark S. Miller" <erights@google.com>, Sean Hogan <shogun70@westnet.com.au>, "www-dom@w3.org" <www-dom@w3.org>, "public-script-coord@w3.org" <public-script-coord@w3.org>, Alex Russell <slightlyoff@google.com>
On Tue, Jun 4, 2013 at 8:55 AM, Sam Tobin-Hochstadt <samth@ccs.neu.edu> wrote: > Thinking about this more, I'm now unsure why both `fulfill` and > `resolve` are needed given the semantics of `.chain()` and `.then()` > described below. > > In particular, if `.then()` chains recursively *before* calling the > callback, then there's no difference between: > > Future.resolve(x).then(v => ...) > > and > > Future.fulfill(x).then(v => ...) > > even when `x` is a promise. The only way to observe this is with `.chain()`. > > Thoughts? I'm just going to try to repeat what you said here to make sure I understand. Promise.resolve(val) creates a promise of val, regardless of whether val is a promise, has a callable then property, or anything like that. (In that sense it is equivalent to Future.accept() today.) promise.then() keeps unwrapping promise's internal value until it no longer has a callable then property at which point it invokes the relevant callback passed to promise.then(). (Exact algorithm TBD after broader agreement.) promise.chain() invokes its relevant callback with promise's internal value. promise.then() and promise.chain() return value (newPromise) is resolved with the return value of their callbacks after it has been unwrapped once. If that's it that works for me. My main problem with this renaming has been fulfill, which is way hard to spell (at least if you're not a native), but that has conveniently disappeared. -- http://annevankesteren.nl/
Received on Tuesday, 4 June 2013 13:49:10 UTC