> -----Original Message-----
> From: Tab Atkins Jr. [mailto:[email protected]]
> Sent: Friday, April 19, 2013 5:18 PM
> To: Kevin Gadd
> Cc: Ron Buckton; es-discuss
> Subject: Re: Futures (was: Request for JSON-LD API review)
> 
> On Fri, Apr 19, 2013 at 4:02 PM, Kevin Gadd <[email protected]> wrote:
> 
> One simple possibility would be to just expose accept/resolve/reject on the
> returned Future itself.  Calling any of these cancels the Future (if the 
> Future
> has a notion of cancellation), and forces it to adopt the passed state as
> appropriate.  The constructor would take two callbacks, one for normal
> operation (called immediately) and one to handle cancellation (called when
> needed).  This has the nice benefit that a consumer can provide a default
> value for other consumers to use, and it doesn't require any new codeflow
> channels.

I'd be more interested in having a creatable FutureResolver with a .future 
accessor property for those cases. Given the current API, its possible (but not 
pretty) to do something like:

function someCancelable() {
  var cancel;
  var future = new Future(function(resolver) { 
    cancel = function() { resolver.reject("cancelled"); }
    // other async work
  })
  return { cancel: cancel, future: future };
}

var { cancel, future } = someCancelable();
future.then(...).done(...);
elt.onclick = cancel;

Though this still wouldn't really prevent unnecessary tasks from being queued 
on the dispatcher.

> It would be so nice if JS had multiple return values, so we could let
> cancellable future-returning APIs just return a naked resolver as their second
> value, and only clueful call sites would need to care about it.  ^_^  Instead,
> we'll probably need to have API variants that instead return something like a
> Deferred, or that return a pair of a future and a resolver.

That sounds like what I just mentioned in 
https://gist.github.com/rbuckton/5424214. 
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to