//c.js
function processTasks(...tasks){
let isRunning=false;
const result=[];
let i=0;
return {
start(){
return new Promise(async (resolve,reject)=>{
if(isRunning){
return;
}
isRunning=true;
while(i<tasks.length){
console.log('start tasks ' + i)
const ret=await tasks[i]();
result.push(ret);
i++;
if(!isRunning){
return;
}
}
isRunning=false;
resolve(result);
});
},
pause(){
isRunning=false;
}
}
}
<body>
<button onclick="start()">starttask</button>
<button onclick="pause()">pausetask</button>
</div>
<script src="./c.js"></script>
<script>
const tasks=[];
for(let i=0;i<5;i++){
tasks.push(()=>{
return new Promise((resolve)=>{
setTimeout(()=>{resolve(i)},2000)
})
})
}
const processtask=processTasks(...tasks);
function start(){
console.log('start task');
processtask.start()
}
function pause(){
console.log('pause task');
processtask.pause()
}
</script>
</body>