The work has since moved into the specification that defines the event loop, i.e. the HTML Standard:
* https://github.com/whatwg/html/issues/512 * https://github.com/whatwg/html/pull/2789 From: es-discuss [mailto:[email protected]] On Behalf Of Isiah Meadows Sent: Tuesday, June 27, 2017 16:25 To: Calvin Metcalf <[email protected]>; C. Scott Ananian <[email protected]> Cc: [email protected] Subject: Re: Microtask scheduling I was browsing and stumbled on a strawman that is nearly identical to what I proposed here (mod the extra args handling), just a couple years old: https://github.com/rwaldron/tc39-notes/blob/master/es6/2014-09/sept-25.md#510-globalasap-for-enqueuing-a-microtask On Mon, Jun 26, 2017, 13:49 Calvin Metcalf <[email protected]<mailto:[email protected]>> wrote: One of the big use cases for process.nextTick is throwing errors outside the current stack, either to avoid preventing cleanup or to avoid being caught in try/catch blocks or promise chains so using a promise directly isn't very useful. This came up in the browserify/webpack shim for process.nextTick On Mon, Jun 26, 2017 at 12:29 PM C. Scott Ananian <[email protected]<mailto:[email protected]>> wrote: Promise dispatch should actually simplify to this in certain common cases. I meant to write up a document describing the typical dispatch optimizations high-performance Promise libraries do, based on my experiences writing https://github.com/cscott/babybird (although Optimization Notes in the README of that package contains the basic details). Assuming the Promise implementation is fast, then Promise#then0(...) should basically give you direct access to the internal `asap`-like dispatcher. --scott On Mon, Jun 26, 2017 at 8:20 AM, Calvin Metcalf <[email protected]<mailto:[email protected]>> wrote: Kris, you're conflating macrotasks and microtasks [1]. This has come up a couple times before and there have been issues raised by browser venders[2][3]. 1. https://github.com/YuzuJS/setImmediate#macrotasks-and-microtasks 2. https://bugzilla.mozilla.org/show_bug.cgi?id=686201 3. https://groups.google.com/a/chromium.org/forum/#!msg/blink-dev/Hn3GxRLXmR0/XP9xcY_gBPQJ On Mon, Jun 26, 2017 at 2:51 AM Kris Siegel <[email protected]<mailto:[email protected]>> wrote: This seems more like a platform-level feature versus something that needs to be part of the ECMAScript standard. Also, keep in mind it's rarely a good idea to explicitly call nextTick() in node as it executes the code immediately after the current code is finished and before the next, scheduled code (this can cause issues with processing I/O if you're doing it too frequently). In a browser you can sorta emulate similar behavior through IE's setImmediate(), using postMessage() or even the requestAnimationFrame(). Granted none of those are exactly like nextTick() and I wouldn't mind seeing something like setImmediate() become more of a standard but this isn't for the ECMAScript group. On Wed, Jun 21, 2017 at 2:10 PM, Isiah Meadows <[email protected]<mailto:[email protected]>> wrote: It's a relatively low-level operation, but in performance-sensitive async code and polyfills, there's still a strong need for raw microtask scheduling, at a much lower level than promises. In particular, there's two very frequently used modules providing a wrapper for this specific thing: 1. next-tick: A browser polyfill for Node's `process.nextTick`, with over 2M downloads last month and 88 direct dependents. 2. asap: A microtask scheduler that avoids blocking Node's I/O loop, with over 7M downloads last month and 88 direct dependents. In addition, several libraries like Bluebird have to implement their own wrappers to gain similar functionality without assuming another dependency. Any chance something like Node's `process.nextTick` could be added, maybe something like `Promise.schedule(func, thisArg, ...args)`? ----- Isiah Meadows [email protected]<mailto:[email protected]> Looking for web consulting? Or a new website? Send me an email and we can get started. www.isiahmeadows.com<http://www.isiahmeadows.com> _______________________________________________ es-discuss mailing list [email protected]<mailto:[email protected]> https://mail.mozilla.org/listinfo/es-discuss _______________________________________________ es-discuss mailing list [email protected]<mailto:[email protected]> https://mail.mozilla.org/listinfo/es-discuss _______________________________________________ es-discuss mailing list [email protected]<mailto:[email protected]> https://mail.mozilla.org/listinfo/es-discuss
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

