Re: Deprecating Future's .then()

Anne van Kesteren <[email protected]>
Newsgroups gmane.comp.web.dom.general
Message-ID <CADnb78id2BJn=bkxK--TSpNJr6bqXsQx7+GnDNF1m9FEZA7B6Q@mail.gmail.com>
On Tue, Jun 4, 2013 at 8:55 AM, Sam Tobin-Hochstadt <[email protected]> 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/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.