@daiso-tech/core
Version:
The library offers flexible, framework-agnostic solutions for modern web applications, built on adaptable components that integrate seamlessly with popular frameworks like Next Js.
31 lines • 1.05 kB
JavaScript
/**
* @module Utilities
*/
import {} from "../../time-span/contracts/_module.js";
import { TimeSpan } from "../../time-span/implementations/time-span.js";
/**
* IMPORT_PATH: `"@daiso-tech/core/utilities"`
* @group Utilities
*/
export async function delay(time, signal = new AbortController().signal) {
await new Promise((resolve, reject) => {
if (signal.aborted) {
// eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors
reject(signal.reason);
return;
}
const timeoutId = setTimeout(() => {
signal.removeEventListener("abort", onAbort);
resolve();
}, TimeSpan.fromTimeSpan(time).toMilliseconds());
function onAbort() {
clearTimeout(timeoutId);
// eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors
reject(signal.reason);
}
signal.addEventListener("abort", onAbort, {
once: true,
});
});
}
//# sourceMappingURL=delay.js.map