On Fri, Apr 26, 2013 at 11:25 AM, Kevin Smith <zenparsing@gmail.com> wrote: > Actually, I may have gotten it terribly wrong (apologies). In my prototype > implementation, the following: > > Future.accept(Future.resolve(1)).then(value => { > > console.log(value !== 1); > return Future.accept(Future.resolve(1)); > > }).then(value => { > > console.log(value === 1); > }); > > logs > > - true > - true > > Is that what it should be doing, according to the DOM spec? Anne, Alex? No, it should be "true", then "false". Future.resolve(1) returns a Future<1>. Future.accept(Future.resolve(1)) returns Future<Future<1>>. If you call .then() on a Future<Future<1>>, the callback receives a Future<1> as its argument. If you return a Future<Future<1>> from the callback, the chained future adopts its state, which means that the chained future is now also a Future<Future<1>>. So, calling .then() on the chained future will give you the same result - the callback receives a Future<1> as its argument. (Using a mixture of Future.accept and Future.resolve in the way that you have makes things more confusing than necessary. When called on a plain value, the two functions are identical. They only act differently when you call them on a future.) ~TJReceived on Friday, 26 April 2013 18:33:36 UTC
This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 17:14:13 UTC