رویدادهای زمان‌بندی جاوااسکریپت

JavaScript می‌تواند در یک بازه زمانی اجرا شود.

این همان چیزی است که به آن رویدادهای زمان‌بندی شده (Timing Events) می‌گویند.

Timing 事件

window 对象允许以指定的时间间隔执行代码。

这些时间间隔称为定时事件。

通过 JavaScript 使用的有两个关键的方法:

setTimeout(function, میلی‌ثانیه‌ها)
在等待指定的毫秒数后执行函数。
setInterval(function, میلی‌ثانیه‌ها)
等同于 setTimeout(),但持续重复执行该函数。

setTimeout()method setInterval() 都属于 HTML DOM Window 对象的方法。

setTimeout() 方法

window.setTimeout(function, میلی‌ثانیه‌ها);

window.setTimeout() 方法可以不带 window 前缀来编写。

第一个参数是要执行的函数。

第二个参数指示执行之前的毫秒数。

مثال

单击按钮。等待 3 秒,然后页面会提示 "Hello":

<button onclick="setTimeout(myFunction, 3000)">试一试</button>
<script>
function myFunction() {
    alert('Hello');
 }
</script>

خودتان امتحان کنید

如何停止执行?

clearTimeout() 方法停止执行 setTimeout() 中规定的函数。

window.clearTimeout(timeoutVariable)

window.clearTimeout() 方法可以不带 window 前缀来写。

clearTimeout() 使用从 setTimeout() متغیرهای بازگشتی:

myVar = setTimeout(function, میلی‌ثانیه‌ها);
clearTimeout(myVar);

مثال

类似上例,但是添加了“停止”按钮:

<button onclick="myVar = setTimeout(myFunction, 3000)">试一试</button>
<button onclick="clearTimeout(myVar)">停止执行</button>

خودتان امتحان کنید

setInterval() 方法

method setInterval() 方法在每个给定的时间间隔重复给定的函数。

window.setInterval(function, میلی‌ثانیه‌ها);

window.setInterval() 方法可以不带 window 前缀来写。

第一个参数是要执行的函数。

第二个参数每个执行之间的时间间隔的长度。

本例每秒执行一次函数 "myTimer"(就像数字手表)。

مثال

显示当前时间:

var myVar = setInterval(myTimer, 1000);
function myTimer() {
    var d = new Date();
    document.getElementById("demo").innerHTML = d.toLocaleTimeString();
}

خودتان امتحان کنید

一秒有 1000 毫秒。

如何停止执行?

method clearInterval() 方法停止 method setInterval() 方法中指定的函数的执行。

window.clearInterval(timerVariable)

window.clearInterval() می‌توان نوشت بدون پیشوند window.

method clearInterval() از method setInterval() متغیرهای بازگشتی:

myVar = setInterval(function, میلی‌ثانیه‌ها);
clearInterval(myVar);

مثال

مانند مثال بالا، اما ما یک دکمه‌ی "توقف زمان" اضافه کرده‌ایم:

<p id="demo"></p>
<button onclick="clearInterval(myVar)">توقف زمان</button>
<script>
var myVar = setInterval(myTimer, 1000);
 function myTimer() {
    var d = new Date();
    document.getElementById("demo").innerHTML = d.toLocaleTimeString();
}
</script>

خودتان امتحان کنید