js 任务顺序执行 暂停

//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>

 

posted @ 2026-01-20 16:31  howhy  阅读(1)  评论(0)    收藏  举报