BTW, there's still usefulness of making resolution/rejection idempotent and
never throwing. IMHO, I'd just like to see this die.

-----

Isiah Meadows
[email protected]

On Tue, Feb 28, 2017 at 4:36 PM, Jordan Harband <[email protected]> wrote:

> 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

Reply via email to