今天在看紅寶書的時候突然看到settimeout()部分,想起來之前做東西時候遇到的乙個問題!
當時為了單擊和雙擊不衝突,所以給mousedown加了settimeout延遲執行。後面又要區分滑鼠移動和沒移動又加了乙個settimeout,就遇到問題了。
程式會先執行mousedown中的延遲,mousemove的延遲會被放在down延遲的後面執行,所以在執行move延遲之間就執行了down延遲的事件(當時move事件是繫結在down事件之後的),所以導致move的延遲事件無法執行。
這個問題困擾我很久很久,當時換了種方法解決的,也沒有深究,今天也算是了解到原理了,看來學習原理真的很重要!
for迴圈 setTimeout的延遲操作
1 for var i 0 i 5 i 100 5 上述 輸出結果顯而易見是5個5,且並沒有任何的延遲效果。那麼為什麼呢?首先這樣的結果需要從js的執行機制說起。js是單執行緒環境,也就是說 的執行是從上到下,依次執行。這樣的執行稱為同步執行。因為種種不要浪費和節約的原因。js中引進了非同步的機制。...
laravel Model 執行事務
1.官方手冊是這樣介紹的 想要在乙個資料庫事務中執行一連串操作,可以使用db門面的transaction方法,如果事務閉包中丟擲異常,事務將會自動回滾。如果閉包執行成功,事務將會自動提交。使用transaction方法時不需要擔心手動回滾或提交 db transaction function 手動使...
setTimeout非同步執行函式this丟失
var prop 100 function parent parent.prototype.get function parent.prototype.show function var child new parent child.show 2.使用es6中的箭頭函式,因為在箭頭函式中this是固...