





















//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>
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。