Ron Buckton has a proposal that's quite similar to what you're talking
about: https://github.com/tc39/proposal-using-statement

On Mon, Oct 15, 2018 at 11:40 AM Dan Aprahamian <[email protected]>
wrote:

> Hello all! First time posting here. I was curious if there was ever talk
> about adding something similar to python's with syntax to JS. Obviously we
> already have a "with" keyword, but I figure we could probably use "use" as
> the keyword instead. I was thinking something like
>
> // Some user defined resource that can be "entered" and "exited"
> class MyResource {
>   // Function called when entered
>   async [Symbol.enter]() {
>   }
>
>   // Function called when exited
>   [Symbol.exit]() {
>   }
> }
>
> const resource = new MyResource();
>
> async function useResource() {
>   use myResource {
>     // Inside here, resource has had "acquire" called on it
>
>     await doSomethingAsync();
>     // Once this block is finished executing (including async)
>     // release is called
>   }
>   // Release has been called now
> }
>
> Use would effectively be the equivalent of:
>
> async function use(resource, body) {
>   await resource[Symbol.enter]();
>   try {
>     await body();
>   } finally {
>     await resource[Symbol.exit]();
>   }
> }
>
> Has something like this been considered before?
>
> Thanks,
> Dan
> _______________________________________________
> 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