- 新時期的Node.js入門
- 李鍇
- 574字
- 2019-12-12 17:05:45
2.12 Timer
定時器相關的API在JavaScript中已經存在了很長時間,Node中的定時器都是全局方法,無須通過require來引入。
2.12.1 常用API
JavaScript中常用的timer方法有兩個,分別是setTimeout和setInterval,在Node中,setTimeout和setInterval屬于Timeout類,調用對應的方法后都會返回相應的對象。
除了這兩個方法之外,Node還提出了新的setImmediate方法,該方法已經在第1章詳細介紹過了,這里省略相關的內容。
1.setTimeout
一個使用setTimeout方法最簡單的例子是延遲一個函數的執行時間,下面的例子中,將會在1秒后打印出Hello。

如果想要在回調執行前清除定時器,可以使用clearTimeout方法:

2.setInterval
如果想要以一個固定的時間間隔運行回調函數,可以使用setInterval方法,使用方式和setTimeout相同,對上面的代碼進行修改:

運行后會以1秒為間隔輸出Hello,同樣的,可以用clearInterval方法來清除定時器:

3.回調函數的參數
在前面定義的定時器中,第一個參數是回調方法,第二個參數是定時器的超時時間,其后面還可以定義更多的參數,多余的參數會被作為回調函數的參數。

2.12.2 定時器中的this
在JavaScript中,setTimeout和setInterval中的this均指向Windows。原因也很簡單,定時器方法的第一個參數是一個匿名函數,而JavaScript中所有匿名函數的this都指向Windows。
代碼2.39 前端JavaScript定時器中的this

在Node中,setTimeout和setInterval的this會指向timeout類,前面也曾提到,該類在setTimeout和setInterval內部創建并返回,開發者通常不會直接用到兩個類,但是可以將其打印出來。
代碼2.40 Node定時器中的this

如果在setTimeout方法內部涉及了this的指向問題,通常會使用bind或者call方法來重新綁定this,我們在第3章還會討論這個問題。

- GitLab Cookbook
- 微信公眾平臺與小程序開發:從零搭建整套系統
- Scratch 3游戲與人工智能編程完全自學教程
- The Data Visualization Workshop
- PHP 7+MySQL 8動態網站開發從入門到精通(視頻教學版)
- 零基礎Java學習筆記
- SQL Server實用教程(SQL Server 2008版)
- Scala for Machine Learning(Second Edition)
- Hadoop Blueprints
- 軟技能2:軟件開發者職業生涯指南
- 基于JavaScript的WebGIS開發
- Spring Boot 2+Thymeleaf企業應用實戰
- Python實戰指南:手把手教你掌握300個精彩案例
- HTML5+CSS+JavaScript深入學習實錄
- 深入實踐C++模板編程