在vue開發環境下發現關於setTimeout的幾個小問題
07-17
在vue開發環境下發現關於setTimeout的幾個小問題
當我在利用Vue進行項目開發的時候總是會遇到各種問題。這些問題無關乎Vue,都是原生JavaScript的知識點,不僅感嘆原生的JavaScript真是前端之本。下面是關於setTimeout的幾個小問題:
1.setTimeout是window對象下面的一個方法,當我們使用它時需要向裡面傳遞兩個參數。第一個參數是一個函數,無論這個函數處於怎樣的上下文環境,它裡面的this永遠指向window對象。Vue實際上是一個對象,所以在Vue中使用setTimeout會發現this的指向會和大部分情況下不一樣,這是需要使用箭頭函數或者call,apply使得this重新指向Vue。
2.setTimeout是一個非同步函數,JavaScript單線程語言對於非同步函數的處理會使用event loop事件處理機制,事件流中的同步事件會影響延遲執行的setTimeout中的代碼塊。需要去了解同步事件的執行,事件觸發肯定不是同步的。
3.clearTimeout會取消setTimeout中代碼塊的執行,與第一點不同的是,clearTimeout竟然與當前上下文環境中的this一致,令人震驚。回答:一個是在回調函數一個是傳參兩者不一樣。更加令人震驚,想要去琢磨琢磨回調函數去。
<--純粹開發筆記-->
推薦閱讀:
※男人怎麼喝酒不傷肝?看看科技界大咖怎麼做
※為什麼不把所有的介面和插頭都做成一個樣子?會不會有一天實現?
※如何看待一代冰箱巨頭新飛停產?
※《紙短情長》我的故事都是關於你呀
※英偉達踩上壟斷爭議線的合作夥伴計劃告終,博客訴苦市場誤解善意