function sleep (duration=20) {
let start = Date.now()
console.log('sleep',start + duration > Date.now())
while(start + duration > Date.now() ) {
}
}
const works = [
() =>{
console.log('A开始')
sleep()
console.log('A结束')
},
() =>{
console.log('B开始')
sleep()
console.log('B结束')
},
() =>{
console.log('C开始')
sleep()
console.log('C结束')
},
() =>{
console.log('D开始')
sleep()
console.log('D结束')
},
() =>{
console.log('E开始')
sleep()
console.log('E结束')
},
]
requestIdleCallback(workLoop)
function workLoop (deadline) {
console.log(36,deadline , deadline.timeRemaining() , deadline.didTimeout )
while(deadline.timeRemaining() > 3 && works.length > 0) {
performUnitOfWork()
}
if(works.length > 0) {
console.log('下一帧从这里开始................')
requestIdleCallback(workLoop)
}
}
function performUnitOfWork () {
let work = works.shift()
work()
}
console