Why go purposefully against the existing terminology of the JavaScript 
ecosystem? Just say “deferred” where you have “promise” and “promise” where you 
have “future” and you avoid needless confusion and conflict.

This isn’t Scala; we have existing terminology for exactly these concepts. Just 
use it.

From: Kevin Smith
Sent: ‎November‎ ‎14‎, ‎2012 ‎11‎:‎23
To: David Bruant
CC: Mark S. Miller, EcmaScript
Subject: Re: Promises


If the second argument is optional, it's possible to have both one-arg and 
two-arg styles in the same API.
What do people think about this idea?

Maybe - minimalism served the class proposal quite well.  It might be a good 
strategy here, too.

Here's what I'm thinking:

    // Creates a new promise
    let promise = new Promise();

    // Resolves the promise (ala Q)
    promise.resolve(value);

    // Rejects the promise (ala Q)
    promise.reject(value);

    // A handle to the eventual value of the promise
    promise.future;

    // The then method (ala Promises/A+)
    promise.future.then(val => {

        // Success handler

    }, err => {

        // Error handler
    });

    // Returns a future for the value
    Promise.when(value);

    // Returns a rejected future with the specified error
    Promise.reject(error);

    // Returns a future for every eventual value in the list
    Promise.whenAll(list);

    // Returns a future for the first resolved future in the list
    Promise.whenAny(list);

Initial implementation here: https://github.com/jscloud/Promise

I think it's important to separate "Promise" from "Future".  Back in the 
CommonJS mailing list days, there was contention between Promises/A (thenables) 
and Promises/B (basically Q).  But they really are complementary:  futures and 
promises.

- Kevin
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to