let timer = setTimeout(()=>{
console.log('1秒后執行')
},1000)
const time1 = Date.now();
for(let i = 0 ;i < 100000;i++) {
console.log(i)
}
const time2 = Date.now();
console.log(time2-time1)
如上所示,for回圈執行在我本地需要11887毫秒,而定時器設定的時候1s后執行,但是根據事件回圈機制,定時器中列印的內容會在for回圈執行后列印出來,不符合預先設定的1s的要求,該如何修改可以在等待的1s中也能執行for回圈?
uj5u.com熱心網友回復:
js是單執行緒的,你這個測驗并不能說明什么問題實際業務處理中,我們可以通過異步方法來規避因單執行緒造成的等待阻塞現象
uj5u.com熱心網友回復:
目前的代碼就是在等待的1s中執行了for回圈的 但是想定時器輸出還需要等for回圈結束才行的uj5u.com熱心網友回復:
通過異步可以解決uj5u.com熱心網友回復:
起一個webworker去處理復雜計算的程式,setTimeout可以寫在主執行緒里,這樣能盡可能的保證setTimeout在1s之后執行了轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/283766.html
標籤:JavaScript
