根据任务轮询原理 每执行一次setTimeout,就把该任务放入宏任务队列中,当主线程任务为空时,再依次从宏任务中调出settimeout执行 function handle(){ let i=0; (function run(){ zy.innerHTML=i+"%"; zy.style.width=i+"%"; if(++i<=100){ setTimeout(run,100) } })() } handle() 利用await制作进度条 由于要获取多个用户,所以使用await