比如說斷點調試打印方法,在打印之前做某些操作,但是還沒到打印的語句,暫時不往下執行,這時候同一個js中的onstorage監聽到localstorage變化會進onstorage裡面,那現在程序是會先等打印的方法執行完再進監聽還是直接就進監聽了????如果是進監聽了那打印方法還沒走完的怎麼辦???
js是貫徹單線程異步的思想,只有一個單線程,事件的觸發,綁定監聽,都是一個線程解決。但是它不包括執行。例如多個動畫,是會同步執行的,由於這是異步的(異步的本質是多線程),js的單線程機制是指所有的事件都需要那個單線程去處理過目,但是具體執行他不會管,js的大多數實現都是基於觀察者模式,只觀察,不執行,換一個簡單點的比喻就是,公司boss 只有一個(單線程),所有事物都要它去批准,但是它不會做任何事。
自然如果你將一個運算直接扔給他,強制它做,那麼效率就會很低。
1.你可以將一個大的循環放入程序執行。
2.數組.map()中放一個大循環
,第一個會很卡
第二個會直接跳過執行下面的,任務會交給異步的一個線程執行。
所以寫js的時候要遵循這個異步原則。所有cpu密集型操作,使用異步執行,單線程只管理事件,不執行