Microtask scheduling
Isiah Meadows
isiahmeadows at gmail.com
Tue Jun 27 20:25:10 UTC 2017
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 <calvin.metcalf at gmail.com> 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 <ecmascript at cscott.net>
> 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 <calvin.metcalf at gmail.com
>> > 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 <krissiegel at gmail.com>
>>> 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 <isiahmeadows at gmail.com>
>>>> 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
>>>>> me at isiahmeadows.com
>>>>>
>>>>> Looking for web consulting? Or a new website?
>>>>> Send me an email and we can get started.
>>>>> www.isiahmeadows.com
>>>>> _______________________________________________
>>>>> es-discuss mailing list
>>>>> es-discuss at mozilla.org
>>>>> https://mail.mozilla.org/listinfo/es-discuss
>>>>>
>>>>
>>>> _______________________________________________
>>>> es-discuss mailing list
>>>> es-discuss at mozilla.org
>>>> https://mail.mozilla.org/listinfo/es-discuss
>>>>
>>>
>>> _______________________________________________
>>> es-discuss mailing list
>>> es-discuss at mozilla.org
>>> https://mail.mozilla.org/listinfo/es-discuss
>>>
>>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20170627/8413aedc/attachment-0001.html>
More information about the es-discuss
mailing list