Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F5970007
mediawiki.requestIdleCallback.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
1 KB
Referenced Files
None
Subscribers
None
mediawiki.requestIdleCallback.js
View Options
/* global mw */
mw
.
requestIdleCallbackInternal
=
function
(
callback
)
{
setTimeout
(
function
()
{
var
start
=
mw
.
now
();
callback
(
{
didTimeout
:
false
,
timeRemaining
:
function
()
{
// Hard code a target maximum busy time of 50 milliseconds
return
Math
.
max
(
0
,
50
-
(
mw
.
now
()
-
start
)
);
}
}
);
},
1
);
};
/**
* Schedule a deferred task to run in the background.
*
* This allows code to perform tasks in the main thread without impacting
* time-critical operations such as animations and response to input events.
*
* Basic logic is as follows:
*
* - User input event should be acknowledged within 100ms per [RAIL][].
* - Idle work should be grouped in blocks of upto 50ms so that enough time
* remains for the event handler to execute and any rendering to take place.
* - Whenever a native event happens (e.g. user input), the deadline for any
* running idle callback drops to 0.
* - As long as the deadline is non-zero, other callbacks pending may be
* executed in the same idle period.
*
* See also:
*
* - <https://developer.mozilla.org/en-US/docs/Web/API/Window/requestIdleCallback>
* - <https://w3c.github.io/requestidlecallback/>
* - <https://developers.google.com/web/updates/2015/08/using-requestidlecallback>
*
* [RAIL]: https://developers.google.com/web/fundamentals/performance/rail
*
* @memberof mw
* @method
* @param {Function} callback
* @param {Object} [options]
* @param {number} [options.timeout] If set, the callback will be scheduled for
* immediate execution after this amount of time (in milliseconds) if it didn't run
* by that time.
*/
mw
.
requestIdleCallback
=
window
.
requestIdleCallback
?
// Bind because it throws TypeError if context is not window
window
.
requestIdleCallback
.
bind
(
window
)
:
mw
.
requestIdleCallbackInternal
;
// Note: Polyfill was previously disabled due to
// https://bugs.chromium.org/p/chromium/issues/detail?id=647870
// See also <http://codepen.io/Krinkle/full/XNGEvv>
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Oct 3, 14:09 (9 h, 34 m ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
47/10/8782520a15a0a5efc45ac28556de
Default Alt Text
mediawiki.requestIdleCallback.js (1 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment