Files
react-native/packages/react-native/Libraries/Core/Timers/queueMicrotask.js
T
Tim Yung 1977dd6596 RN: Sort Pragmas in Headers (#51554)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/51554

Sorts pragma directives file headers in React Native.

Changelog:
[Internal]

Reviewed By: SamChou19815

Differential Revision: D75264593

fbshipit-source-id: 9e4b253dd0fc94dc2fc469d7114b93a8aae305f4
2025-05-22 21:18:53 -07:00

42 lines
1.2 KiB
JavaScript

/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @flow
* @format
*/
'use strict';
let resolvedPromise;
/**
* Polyfill for the microtask queueing API defined by WHATWG HTML spec.
* https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-queuemicrotask
*
* The method must queue a microtask to invoke @param {function} callback, and
* if the callback throws an exception, report the exception.
*/
export default function queueMicrotask(callback: Function) {
if (arguments.length < 1) {
throw new TypeError(
'queueMicrotask must be called with at least one argument (a function to call)',
);
}
if (typeof callback !== 'function') {
throw new TypeError('The argument to queueMicrotask must be a function.');
}
// Try to reuse a lazily allocated resolved promise from closure.
(resolvedPromise || (resolvedPromise = Promise.resolve()))
.then(callback)
.catch(error =>
// Report the exception until the next tick.
setTimeout(() => {
throw error;
}, 0),
);
}