@freemework/common
Version:
Common library of the Freemework Project.
32 lines • 1.24 kB
JavaScript
import { FCancellationExecutionContext, FCancellationException } from "../cancellation/index.js";
import { FExecutionContext } from "../execution_context/index.js";
export function FSleep(data, ms) {
return fsleep(data, ms);
}
export function fsleep(data, ms) {
const cancellationToken = data instanceof FExecutionContext
? FCancellationExecutionContext.of(data).cancellationToken
: data;
return new Promise((resolve, reject) => {
if (cancellationToken.isCancellationRequested) {
return reject(new FCancellationException());
}
let timeout = null;
if (ms !== undefined) {
function timeoutCallback() {
cancellationToken.removeCancelListener(cancelCallback);
return resolve();
}
timeout = setTimeout(timeoutCallback, ms);
}
function cancelCallback() {
cancellationToken.removeCancelListener(cancelCallback);
if (timeout !== null) {
clearTimeout(timeout);
}
return reject(new FCancellationException());
}
cancellationToken.addCancelListener(cancelCallback);
});
}
//# sourceMappingURL=f_sleep.js.map