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 <ecmascr...@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.metc...@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 <krissie...@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 <isiahmead...@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 >>>> m...@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@mozilla.org >>>> https://mail.mozilla.org/listinfo/es-discuss >>>> >>> >>> _______________________________________________ >>> es-discuss mailing list >>> es-discuss@mozilla.org >>> https://mail.mozilla.org/listinfo/es-discuss >>> >> >> _______________________________________________ >> es-discuss mailing list >> es-discuss@mozilla.org >> https://mail.mozilla.org/listinfo/es-discuss >> >> >
_______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss