- 1 1. Pendahuluan: Apa Itu JavaScript setTimeout?
- 2 2. Sintaks Dasar dan Perilaku setTimeout
- 3 3. Penggunaan Lanjutan: Menyerahkan Argumen dan Menangani this
- 4 4. Perbedaan antara setTimeout dan setInterval
- 5 5. Kasus Penggunaan Praktis setTimeout
- 6 6. Catatan Penting dan Pemecahan Masalah
- 7 7. FAQ: Pertanyaan yang Sering Diajukan tentang setTimeout
- 8 8. Ringkasan Akhir dan Informasi Tambahan
1. Pendahuluan: Apa Itu JavaScript setTimeout?
JavaScript adalah salah satu bahasa pemrograman inti yang digunakan untuk membuat elemen dinamis dan interaktif dalam pengembangan web. Di antara banyak fiturnya, fungsi setTimeout sering dipakai untuk mengeksekusi proses tertentu setelah sejumlah waktu tertentu berlalu.
Fungsi ini bekerja seperti timer: begitu penundaan yang ditentukan selesai, ia mengeksekusi sebuah fungsi atau blok kode di dalam program. Hal ini memudahkan penerapan skenario seperti animasi, tampilan popup, dan pemrosesan yang ditunda.
Contoh Penggunaan Umum JavaScript setTimeout
- Animasi yang ditunda Misalnya, menambahkan penundaan singkat sebelum sebuah elemen memudar masuk.
- Mengontrol interaksi pengguna Menunda klik pengguna atau pengiriman formulir untuk mencegah operasi yang tidak disengaja.
- Penjadwalan tugas Mengelola banyak tugas asynchronous secara efisien dengan mengeksekusinya secara berurutan setelah penundaan.
Mengapa setTimeout Diperlukan?
JavaScript pada dasarnya berjalan pada satu thread, yang berarti ia tidak dapat mengeksekusi banyak proses secara bersamaan. Akibatnya, pemrosesan yang kompleks dapat menyebabkan layar membeku.
Namun, dengan menggunakan setTimeout untuk menjadwalkan pemrosesan asynchronous, Anda dapat menjaga antarmuka pengguna tetap responsif sambil menangani tugas lain di latar belakang.
Sintaks Dasar setTimeout
setTimeout(function, delay);
- function : Kode atau fungsi yang akan dieksekusi setelah penundaan.
- delay : Waktu penundaan eksekusi (dalam milidetik). Satu detik sama dengan 1000 milidetik.
Contoh:
setTimeout(() => {
console.log('Displayed after 3 seconds');
}, 3000);
Kode ini menampilkan pesan “Displayed after 3 seconds” ke konsol setelah tiga detik.
Ringkasan
Fungsi setTimeout dalam JavaScript adalah fitur yang sangat berguna untuk mengontrol timing di dalam sebuah program. Ia mudah digunakan dan mendukung beragam skenario seperti animasi dan pemrosesan asynchronous.
Pada bagian berikutnya, kita akan menjelajahi penggunaan yang lebih detail serta contoh kode praktis dari setTimeout.

2. Sintaks Dasar dan Perilaku setTimeout
Fungsi JavaScript setTimeout mengeksekusi sebuah fungsi setelah sejumlah waktu tertentu. Pada bagian ini, kami akan menjelaskan penggunaan dasar dan perilakunya dengan contoh konkret.
Sintaks Dasar setTimeout
setTimeout(function, delay, [arg1, arg2, ...]);
Deskripsi parameter:
- function: Fungsi atau blok kode yang akan dieksekusi.
- delay: Waktu penundaan dalam milidetik.
- arg1, arg2, …: Argumen opsional yang diteruskan ke fungsi.
Penggunaan Dasar
Contoh 1: Eksekusi sederhana yang ditunda
setTimeout(() => {
console.log('Executed after 3 seconds');
}, 3000);
Kode ini menampilkan “Executed after 3 seconds” ke konsol setelah tiga detik.
Contoh 2: Menggunakan fungsi bernama
function greet() {
console.log('Hello!');
}
setTimeout(greet, 2000);
Pada contoh ini, fungsi greet dipanggil setelah dua detik dan menampilkan “Hello!”.
Menyerahkan Argumen
function sayMessage(message) {
console.log(message);
}
setTimeout(sayMessage, 1500, 'Good morning!');
Output:
Good morning!
Membatalkan Timer
Untuk membatalkan timer sebelum ia dieksekusi, gunakan fungsi clearTimeout.
const timerId = setTimeout(() => {
console.log('This message will not be displayed');
}, 3000);
// Cancel the timer
clearTimeout(timerId);
Ringkasan
Pada bagian ini, kami membahas sintaks dasar dan contoh praktis setTimeout.
- Kami menjelaskan penggunaan dasar, cara menyerahkan argumen, serta cara memperoleh dan membatalkan ID timer.
- Bagian selanjutnya akan menyelami penggunaan lanjutan serta pertimbangan penting lainnya.
3. Penggunaan Lanjutan: Menyerahkan Argumen dan Menangani this
Pada bagian ini, kami mengeksplorasi penggunaan lanjutan setTimeout. Secara khusus, kami fokus pada cara melewatkan argumen ke fungsi dan pertimbangan penting terkait perilaku this.
Melewatkan Argumen
Contoh 1: Melewatkan argumen sederhana
function greet(name) {
console.log(`Hello, ${name}!`);
}
setTimeout(greet, 2000, 'Taro');
Output:
Hello, Taro!
Melewatkan Beberapa Argumen
function add(a, b) {
console.log(a + b);
}
setTimeout(add, 1000, 5, 10);
Output:
15
Catatan Penting tentang Perilaku this
Contoh: this tidak berperilaku seperti yang diharapkan
const obj = {
name: 'Taro',
greet: function() {
setTimeout(function() {
console.log(`Hello, ${this.name}!`);
}, 1000);
}
};
obj.greet();
Output:
Hello, undefined!
Solusi
Menggunakan Fungsi Panah
greet: function() {
setTimeout(() => {
console.log(`Hello, ${this.name}!`);
}, 1000);
}
Menggunakan Metode bind
greet: function() {
setTimeout(function() {
console.log(`Hello, ${this.name}!`);
}.bind(this), 1000);
}
Ringkasan
Pada bagian ini, kami menjelaskan cara melewatkan argumen ke fungsi menggunakan setTimeout dan menyoroti pertimbangan penting saat bekerja dengan this.
Pada bagian berikutnya, kami membandingkan setTimeout dengan setInterval dan menjelaskan kapan harus menggunakan masing‑masing.

4. Perbedaan antara setTimeout dan setInterval
Dalam JavaScript, ada fungsi lain yang terkait dengan waktu serupa dengan setTimeout yang disebut setInterval. Meskipun keduanya digunakan untuk pemrosesan berbasis waktu, perilakunya sangat berbeda. Bagian ini menjelaskan perbedaan mereka dan cara memilih di antara keduanya.
Perbedaan Utama antara setTimeout dan setInterval
| Item | setTimeout | setInterval |
|---|---|---|
| Behavior | Executes once after a specified delay | Executes repeatedly at fixed intervals |
| Return value | Returns a timer ID | Returns a timer ID |
| Cancellation method | clearTimeout(timerId) | clearInterval(timerId) |
| Timing accuracy | Relatively stable since it runs only once | Intervals may drift over time (cumulative delay) |
| Typical use cases | Delayed execution or one-time tasks | Repeated actions or timer updates |
Contoh: Perilaku setTimeout
setTimeout(() => {
console.log('Executed only once');
}, 2000);
Kode ini menghasilkan “Executed only once” satu kali setelah dua detik.
Contoh: Perilaku setInterval
setInterval(() => {
console.log('Executed every second');
}, 1000);
Kode ini berulang kali menghasilkan “Executed every second” setiap satu detik.
Membatalkan setInterval
const intervalId = setInterval(() => {
console.log('Running repeatedly...');
}, 1000);
// Stop the interval after 5 seconds
setTimeout(() => {
clearInterval(intervalId);
console.log('Interval stopped');
}, 5000);
Menggunakan setTimeout untuk Eksekusi Berulang
function repeat() {
console.log('Executed repeatedly');
setTimeout(repeat, 1000); // Call itself again after 1 second
}
repeat();
Ringkasan
Pada bagian ini, kami menjelaskan perbedaan antara setTimeout dan setInterval serta cara menggunakannya dengan tepat.
Pada bagian berikutnya, kami memperkenalkan contoh penggunaan yang lebih praktis dan dunia nyata.
5. Kasus Penggunaan Praktis setTimeout
Pada bagian ini, kami memperkenalkan contoh praktis dan dunia nyata menggunakan setTimeout. Melalui contoh-contoh ini, Anda dapat belajar cara mengimplementasikan kontrol waktu dalam berbagai skenario.
Kasus Penggunaan 1: Mengontrol Animasi Loading
const loader = document.getElementById('loader');
loader.style.display = 'block';
setTimeout(() => {
loader.style.display = 'none';
console.log('Loading completed');
}, 3000);
Kasus Penggunaan 2: Mencegah Klik Tombol Berulang (Debounce)
let timeout;
document.getElementById('submitButton').addEventListener('click', () => {
clearTimeout(timeout);
timeout = setTimeout(() => {
console.log('Click confirmed');
}, 500);
});
Kasus Penggunaan 3: Tindakan Tertunda Selama Navigasi Halaman
const link = document.getElementById('pageLink');
link.addEventListener('click', (e) => {
e.preventDefault();
document.body.style.opacity = '0';
setTimeout(() => {
window.location.href = e.target.href;
}, 500);
});
Kasus Penggunaan 4: Slideshow Otomatis
const images = ['img1.jpg', 'img2.jpg', 'img3.jpg'];
let currentIndex = 0;
function showNextImage() {
const imgElement = document.getElementById('slideshow');
imgElement.src = images[currentIndex];
currentIndex = (currentIndex + 1) % images.length;
setTimeout(showNextImage, 3000);
}
showNextImage();
Kasus Penggunaan 5: Kuis Berbatas Waktu
let timeLeft = 10;
const timer = setInterval(() => {
console.log(`Time remaining: ${timeLeft} seconds`);
timeLeft--;
if (timeLeft < 0) {
clearInterval(timer);
console.log('Time is up!');
}
}, 1000);
Ringkasan
Pada bagian ini, kami memperkenalkan beberapa contoh penggunaan praktis setTimeout.
Pada bagian berikutnya, kami akan menjelaskan pertimbangan penting serta tips pemecahan masalah.

6. Catatan Penting dan Pemecahan Masalah
Pada bagian ini kami menjelaskan poin‑poin utama yang perlu diingat saat menggunakan setTimeout, beserta masalah umum dan cara mengatasinya.
1. Waktu Eksekusi setTimeout Tidak Tepat
console.log('Start');
setTimeout(() => {
console.log('Timer executed');
}, 2000);
console.log('End');
Output:
Start
End
Timer executed (after 2 seconds)
Solusi:
const start = Date.now();
setTimeout(() => {
const elapsed = Date.now() - start;
console.log(`Execution time: ${elapsed} milliseconds`);
}, 2000);
2. Kesalahan Referensi this di Dalam setTimeout
const obj = {
name: 'Taro',
greet: function() {
setTimeout(function() {
console.log(`Hello, ${this.name}!`);
}, 1000);
}
};
obj.greet();
Solusi 1: Menggunakan Fungsi Panah
setTimeout(() => {
console.log(`Hello, ${this.name}!`);
}, 1000);
Solusi 2: Menggunakan Metode bind
setTimeout(function() {
console.log(`Hello, ${this.name}!`);
}.bind(this), 1000);
3. Lupa Membatalkan Timer
const timerId = setTimeout(() => {
console.log('This will execute');
}, 5000);
// Cancel the timer based on a condition
clearTimeout(timerId);
Ringkasan
Pada bagian ini, kami membahas catatan penting dan tips pemecahan masalah saat menggunakan setTimeout.
Pada bagian berikutnya, kami menjawab pertanyaan yang sering diajukan (FAQ) dari pembaca.
7. FAQ: Pertanyaan yang Sering Diajukan tentang setTimeout
Pada bagian ini, kami merangkum pertanyaan umum tentang setTimeout dalam format FAQ.
Q1. Apakah setTimeout(0) dieksekusi segera?
A: Tidak, setTimeout(0) tidak dieksekusi segera.
console.log('Start');
setTimeout(() => {
console.log('Timer executed');
}, 0);
console.log('End');
Output:
Start
End
Timer executed
Q2. Bagaimana cara menghentikan timer di tengah jalan?
A: Anda dapat menghentikan timer menggunakan clearTimeout.
const timerId = setTimeout(() => {
console.log('This will not be executed');
}, 5000);
clearTimeout(timerId);
Q3. Bisakah saya mengirim argumen ke setTimeout?
A: Ya, Anda dapat mengirim argumen mulai dari parameter ketiga.
function greet(name) {
console.log(`Hello, ${name}!`);
}
setTimeout(greet, 2000, 'Taro');
Ringkasan
Pada bagian ini, kami membahas pertanyaan‑pertanyaan yang sering diajukan beserta jawabannya terkait setTimeout.
Pada bagian berikutnya, kami merangkum poin‑poin utama artikel ini dan memberikan saran praktis akhir.
8. Ringkasan Akhir dan Informasi Tambahan
Dalam artikel ini, kami membahas fungsi JavaScript setTimeout secara mendalam, mulai dari penggunaan dasar hingga contoh lanjutan, pertimbangan penting, serta pertanyaan yang sering diajukan.
1. Poin Penting
- Cakupan komprehensif dari dasar hingga penggunaan lanjutan: Kami menjelaskan semuanya langkah demi langkah, mulai dari dasar yang ramah pemula hingga contoh lanjutan, pemecahan masalah, dan FAQ.
- Contoh kode praktis: Kami menyediakan banyak contoh konkret yang dapat Anda uji dan terapkan dalam pengembangan dunia nyata.
- Pertimbangan penting dan solusi: Kami membahas penundaan waktu eksekusi, masalah referensi
this, dan cara membatalkan timer dengan benar.
2. Sumber Daya Tambahan
Dokumentasi resmi:
Sumber belajar:
- Menjelajahi dokumentasi umum tentang pemrosesan asinkron JavaScript akan membantu memperdalam pemahaman Anda.
3. Pemikiran Akhir
Fungsi JavaScript setTimeout adalah alat yang sederhana namun kuat yang mendukung berbagai kasus penggunaan. Dengan menerapkan dasar, teknik lanjutan, dan praktik terbaik yang diperkenalkan dalam artikel ini, Anda dapat menulis kode yang lebih fleksibel dan praktis.



