react-hooks-async
Version:
React custom hooks for async functions with abortability and composability
45 lines (35 loc) • 1.23 kB
JavaScript
;
require("core-js/modules/es.function.name");
require("core-js/modules/es.object.to-string");
require("core-js/modules/es.promise");
require("core-js/modules/web.timers");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useAsyncTaskDelay = void 0;
var _react = require("react");
var _useAsyncTask = require("./use-async-task");
var createAbortError = function createAbortError(message) {
try {
return new DOMException(message, 'AbortError');
} catch (e) {
var err = new Error(message);
err.name = 'AbortError';
return err;
}
};
var useAsyncTaskDelay = function useAsyncTaskDelay(delay) {
return (0, _useAsyncTask.useAsyncTask)((0, _react.useCallback)(function (abortController, delayOverride) {
return new Promise(function (resolve, reject) {
var delayToUse = delayOverride || delay;
var id = setTimeout(function () {
resolve(true);
}, typeof delayToUse === 'function' ? delayToUse() : delayToUse);
abortController.signal.addEventListener('abort', function () {
clearTimeout(id);
reject(createAbortError('timer aborted'));
});
});
}, [delay]));
};
exports.useAsyncTaskDelay = useAsyncTaskDelay;