跳转到内容

可取消的sleep实现

function sleep(ms, signal) {
return new Promise((resolve) => {
if (signal?.aborted) {
return resolve();
}
const timer = setTimeout(resolve, ms);
const onAbort = () => {
clearTimeout(timer);
resolve();
};
if (signal) {
signal.addEventListener('abort', onAbort, { once: true });
}
});
}