Contact emailsshase...@chromium.org

Explainer
https://github.com/WICG/scheduling-apis/blob/main/explainers/yield-and-continuation.md

Specification

Summary

Provides a method for yielding control to the browser, which can be used to
break up long tasks. Awaiting the promise returned by scheduler.yield()
causes the current task to yield, continuing in a new browser task. This
can be used to improve responsiveness issues caused by long tasks.
Continuations are prioritized to mitigate performance problems of existing
alternatives.


Blink componentBlink>Scheduling>APIs
<https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3EScheduling%3EAPIs>

Motivation

Long tasks (JavaScript) can lead to poor responsiveness by blocking the
main thread from handling inputs or delaying the resulting UI update.
Developers can mitigate this by decreasing task lengths, either by doing
less work or by breaking up long tasks. Scheduling a continuation using
current APIs typically has poor ergonomics because intuitively one wants to
pause/resume the current task, not schedule a new task. It can also incur a
performance penalty if arbitrary JavaScript runs between yield and
continuation. scheduler.yield() is an ergonomic API for breaking up long
tasks that mitigates performance issues of existing methods. Developers can
await scheduler.yield() to break up long tasks, giving the UA an
opportunity to run higher priority work, e.g. input. scheduler.yield()
continuations are prioritized over tasks of the same priority or similar
task sources, which helps mitigate the performance penalty of yielding.


Initial public proposal

TAG review

TAG review statusPending

Risks


Interoperability and Compatibility



*Gecko*: No signal

*WebKit*: No signal

*Web developers*: No signals

*Other signals*:

WebView application risks

Does this intent deprecate or change behavior of existing APIs, such that
it has potentially high risk for Android WebView-based applications?



Debuggability



Is this feature fully tested by web-platform-tests
<https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>
?No

Flag name

Requires code in //chrome?False

Tracking bughttps://bugs.chromium.org/p/chromium/issues/detail?id=979020

Estimated milestones

No milestones specified


Link to entry on the Chrome Platform Status
https://chromestatus.com/feature/6266249336586240

This intent message was generated by Chrome Platform Status
<https://chromestatus.com/>.

-- 
You received this message because you are subscribed to the Google Groups 
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to blink-dev+unsubscr...@chromium.org.
To view this discussion on the web visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAKXGoJ1SBQP-ABM3%2BsDtKzUZiPoSCWqW2mLOjMrUfFBx4TomSw%40mail.gmail.com.

Reply via email to