About the only broadly useful reasons to want a "wait for" mechanism are
with reactive cells (most reactive libraries don't even have these) and
atomics (which already have `Atomics.wait`).

But short that, I genuinely don't see the point.

As for event emitters, they're dead simple to implement. [1] But on the
same token, I'm not convinced it's either 1. something that actually
belongs in the spec instead of userland, or even 2. something that should
be used in most new code. (Highly state machine-based code is the
exception, not the norm here.) I'd definitely invite you to check out Kris
Kowal's "General Theory of Reactivity" [2] - it's very highly informative.

[1]: https://gist.github.com/isiahmeadows/7399f86d03342b5be2cd29016f9850f4
[2]: https://github.com/kriskowal/gtor


-----

Isiah Meadows
[email protected]
www.isiahmeadows.com

On Fri, May 11, 2018 at 6:25 PM, Sebastian Malton <[email protected]>
wrote:

> What would be nice is if we could have a good way of watching a variable.
> Maybe a built in way to create a custom event emitter.
>
> Sebastian Malton
> *From:* [email protected]
> *Sent:* May 11, 2018 6:05 PM
> *To:* [email protected]
> *Cc:* [email protected]; [email protected]
> *Subject:* Re: Suggested Enhancement to ecmascript
>
> I agree, Promises easily allow you to do this. Even if you wanted to
> 'wait' on an event, you can either.
>
> 1. Use EventEmitter and simply have an 'on' handler
> 2. Create a promise and pass the resolve function to whatever js doing the
> work, and `await` on the promise itself
>
> You can also wrap an event emitter callback with a promise, oe use
> something like RxJS for Observables. So many possibilities.
>
> On Fri, May 11, 2018, 4:56 PM Michał Wadas <[email protected]> wrote:
>
>> What's wrong with async functions and
>> await Promise.all([a, b, c])
>> ?
>>
>> On Fri, May 11, 2018 at 11:14 PM, Matthew Tedder <matthew.tedder@
>> hyperconversal.com> wrote:
>>
>>>
>>> wait for ( condition );
>>>
>>> Stop executing statements until the condition evaluates to true.  To
>>> implement this, freeze the instance of the function in, add a hook to each
>>> variable in the condition so that when its value is written to, the
>>> condition is re-evaluated.
>>>
>>> This will greatly increase the clarity and reduce coding needed for
>>> operations with many asynchronous calls and any with callbacks using arrow
>>> functions..  E.g.,
>>>
>>> let a = false;
>>> let b = 5;
>>> let c = 'oranges';
>>> doSomethenWhenever( () => { a = true; }
>>> doAnotherThingWhenever( () => { b = 16; }
>>> DoYetAnotherThing( () => { c = 'apples'; }
>>> wait for ( a && b > 10 && c !== 'oranges' );
>>> console.log('Conditions are met!');
>>>
>>>
>>> --
>>> Matthew C. Tedder
>>> HyperConversal, Inc.
>>> Desk: 352-381-7142 <3523817142> / Cell: 509-432-5520 <5094325520>
>>>
>>> _______________________________________________
>>> 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
>
>
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to