console
function _runTask(task, callBack) {
const startTime = Date.now()
requestAnimationFrame(() => {
const timeRemaining = Date.now() - startTime
if (timeRemaining > 16.6) {
task()
callBack()
} else {
_runTask(task, callBack)
}
})
}
function runTask(task) {
return new Promise(resolve => {
_runTask(task, resolve)
})
}
function test(){
const start = Date.now()
for(var i =0 ;i<=1000;i++){
runTask(()=>{
for(var i =0 ;i<=1000;i++){}
})
}
console.log(Date.now()-start)
}
<div class="loader"></div>
<button onclick="test()">执行任务</button>
.loader {
width: 40px;
height: 40px;
background-color: #f1c40f;
animation: spin 2s linear infinite;
}
@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}