【定时器】
VSCode的應用工具
?
開發工具:Visual
關鍵技術:定時器
1.setTimeout()
setTimeout函數用來指定某個函數或某段代碼,在多少毫秒之后執行。它返回一個整數,表示定時器的編號,以后可以用來取消這個定時器。
?上面代碼中,setTimeout函數接受兩個參數,第一個參數func|code是將要推遲執行的函數名或者一段代碼,第二個參數delay是推遲執行的毫秒數。
上面代碼會先輸出1和3,然后等待1000毫秒再輸出2。注意,console.log(2)必須以字符串的形式,作為setTimeout的參數。
如果推遲執行的是函數,就直接將函數名,作為setTimeout的參數。
除了前兩個參數,setTimeout還允許更多的參數。它們將依次傳入推遲執行的函數(回調函數)。
?上面代碼中,setTimeout共有4個參數。最后那兩個參數,將在1000毫秒之后回調函數執行時,作為回調函數的參數。
還有一個需要注意的地方,如果回調函數是對象的方法,那么setTimeout使得方法內部的this關鍵字指向全局環境,而不是定義時所在的那個對象。
上面代碼輸出的是1,而不是2。因為當obj.y在1000毫秒后運行時,this所指向的已經不是obj了,而是全局環境。
為了防止出現這個問題,一種解決方法是將obj.y放入一個函數。
?
上面代碼中,obj.y放在一個匿名函數之中,這使得obj.y在obj的作用域執行,而不是在全局作用域內執行,所以能夠顯示正確的值。
另一種解決方法是,使用bind方法,將obj.y這個方法綁定在obj上面。
?
?
總結
- 上一篇: 汽车之家开盘报88.12美元 下跌3.5
- 下一篇: 日语笔记20211216