<script type="text/javascript">
class PromiseQueue {
constructor() {
this.queue = [];
this.paused = false;
}
addTask(task) {
return new Promise((resolve, reject) => {
const wrapper = () => {
if (this.paused) {
this.queue.push(wrapper);
} else {
task().then(resolve).catch(reject);
}
};
this.queue.push(wrapper);
if (this.queue.length === 1) {
wrapper();
}
});
}
start() {
this.paused = false;
const next = () => {
if (this.queue.length > 0) {
const task = this.queue.shift();
task();
}
};
next();
}
pause() {
this.paused = true;
}
resume() {
this.paused = false;
}
}
const queue = new PromiseQueue();
const task1 = () => new Promise((resolve) => setTimeout(() => {
console.log('Task 1');
resolve();
}, 1000));
const task2 = () => new Promise((resolve) => setTimeout(() => {
console.log('Task 2');
resolve();
}, 2000));
queue.addTask(task1).then(() => console.log('Task 1 completed'));
queue.addTask(task2).then(() => console.log('Task 2 completed'));
queue.start();
setTimeout(() => {
queue.pause();
console.log('Queue paused');
}, 1500);
setTimeout(() => {
queue.start();
console.log('Queue started');
}, 4000);
setTimeout(() => {
queue.resume();
console.log('Queue resume');
}, 5000);
</script> 网友回复
如何将linux服务器的文件目录映射到windows电脑磁盘?
Docling 与 MarkItDown 两个库有啥不同?
豆包收费后国产其他ai软件也会跟进收费吗?
JPEG 与 HEIF图片格式区别?
centos7版本太旧无法安装python3.11,如何在docker中运行python3.11?
python如何做个RPA按键精灵的程序?
写一个windows的cmd的python代码如何在命令行中捕获获取复制粘贴的图片?
如何将别人爆款的抖音短视频短剧文案提取为seedance2的提示词?
阿里云域名dns云解析10万次日限额如何应对?
windows电脑如何提交上架ipa苹果应用?


