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. <jackalm...@gmail.com> wrote:

> On Tue, Feb 28, 2017 at 10:12 AM, /#!/JoePea <j...@trusktr.io> 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
> es-discuss@mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to