Although now that I think about it, it wouldn't have to care about the promise state, `resolve` and `reject` could just throw if they're invoked more than once.
On Tue, Feb 28, 2017 at 1:35 PM, Jordan Harband <[email protected]> wrote: > That seems like it would allow synchronous observation of Promise state - > consider: > > ```js > > function isResolved(promise) { > try { > new Promise((resolve) => { > resolve(promise); > resolve(); > }); > } catch (e) { > return true; > } > return false; > } > > ``` > > On Tue, Feb 28, 2017 at 12:58 PM, Isiah Meadows <[email protected]> > wrote: > >> Also, making promise resolution idempotent makes dealing with things way >> easier. Similarly, most deferred libraries ensure their resolution is >> idempotent. >> >> On Tue, Feb 28, 2017, 13:20 Tab Atkins Jr. <[email protected]> wrote: >> >>> On Tue, Feb 28, 2017 at 10:12 AM, /#!/JoePea <[email protected]> wrote: >>> > f.e. >>> > >>> > ```js >>> > let resolve >>> > let p = new Promise(r => resolve = r) >>> > >>> > resolve(5) // resolves the promise. >>> > resolve(4) // noop (in Chrome), but why not throw an error? >>> > ``` >>> > >>> > I only tested in Chrome, and I'm assuming it follows spec, but I could >>> be >>> > wrong. >>> > >>> > I'm asking because it seems that throwing an error will prevent shots >>> in the >>> > foot, so that code doesn't assume that resolving on an already resolved >>> > Promise worked, although it didn't. It seems like it can lead to >>> unexpected >>> > failures. >>> >>> That's correct behavior, yes. In general, it's because the internal >>> state of a promise is meant to be unobservable unless you're >>> specifically listening to it. >>> >>> ~TJ >>> _______________________________________________ >>> es-discuss mailing list >>> [email protected] >>> https://mail.mozilla.org/listinfo/es-discuss >>> >> >> _______________________________________________ >> es-discuss mailing list >> [email protected] >> https://mail.mozilla.org/listinfo/es-discuss >> >> >
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

