kzen.dev
  • Pertanyaan
  • Tag
  • Pengguna
Notifikasi
Imbalan
Registrasi
Setelah Anda mendaftar, Anda akan diberitahu tentang balasan dan komentar untuk pertanyaan Anda.
Gabung
Jika Anda sudah memiliki akun, masuk untuk memeriksa pemberitahuan baru.
Akan ada hadiah untuk pertanyaan, jawaban, dan komentar tambahan.
Lebih
Sumber
Sunting
 Howdy_McGee
Howdy_McGee
Question

Ukuran Tumpukan Panggilan Maksimum Terlampaui Selama panggilan setTimeout

Saya mencoba memanggil fungsi saya setiap 4 detik sehingga akan menambah angka secara langsung. Untuk beberapa alasan saya terus mendapatkan error. Ini kode saya:

<html>
<head>
<title>Recycle Counter</title>
<script type="text/javascript">
    function rand(from, to)
    {
       return Math.floor(Math.random() * (to - from + 1) + from); // Generates random number
    }   

    var num = rand(10000, 100000);

    function getNum() // Gets triggered by page load so innerHTML works
    {
        document.getElementById('counter').innerHTML = num + 7;
        setTimeOut(getNum(), 4000);
    }   
</script>
</head>
<body onload="getNum()">
    <div id="counter">

    </div>
</body>
</html>
22 2012-01-04T18:17:13+00:00 3
 ruffin
ruffin
Pertanyaan edit 10 Mei 2017 в 2:35
Pemrograman
javascript
html
time
Solution / Answer
Rob W
Rob W
4 Januari 2012 в 6:18
2012-01-04T18:18:50+00:00
Lebih
Sumber
Sunting
#15109302

Di dalam getNum, anda secara langsung memanggil fungsi getNum, yang menyebabkan stack habis. Ganti panggilan fungsi getNum() dengan referensi fungsi getNum:

function getNum() // Gets triggered by page load so innerHTML works
{
    num += 7;     // Increase and assign variable
    document.getElementById('counter').innerHTML = num;
    setTimeout(getNum, 4000);   // <-- The correct way
}

Link ke dokumentasi setTimeout.

Rob W
Rob W
Jawaban edit 4 Januari 2012 в 6:24
42
0
 JaredPar
JaredPar
4 Januari 2012 в 6:20
2012-01-04T18:20:28+00:00
Lebih
Sumber
Sunting
#15109303

Masalahnya adalah panggilan anda ke setTimeout memanggil getNum bukannya menjadwalkannya untuk eksekusi. Ini menyebabkan rekursi tak terbatas dan stack overflow. Coba yang berikut ini sebagai gantinya

setTimeout(getNum, 4000);
10
0
 Hogan
Hogan
4 Januari 2012 в 6:21
2012-01-04T18:21:33+00:00
Lebih
Sumber
Sunting
#15109304

setTimeOut seharusnya setTimeout

4
0
Related communities 5
JavaScript Indonesia
JavaScript Indonesia
16 378 pengguna
Grup JavaScript yang membahas JavaScript, framework JS, dan Node JS secara universal. Cek Pinned Message untuk keterangan lebih lanjut. Komunitas ReactJS: https://t.me/react_idn
Buka telegram
HTML dan CSS Indonesia
HTML dan CSS Indonesia
4 333 pengguna
Silahkan bertanya terkait mengenai HTML maupun CSS. Membaca, menulis, berbagi. Baca dahulu pesan tersemat di pinned post.
Buka telegram
Pemrograman Web Indonesia (HTML CSS Javascript PHP MySQL)
Pemrograman Web Indonesia (HTML CSS Javascript PHP MySQL)
274 pengguna
Official Website : https://esistemindo.com Belajar Pemrograman Web (HTML CSS Javascript PHP MySQL) Grup Belajar Pemrograman Web. HTML + PHP + Javascript + MySQL DB Semoga menjadi forum belajar, menambah wawasan, peningkatan mutu personal kita semua.
Buka telegram
HTML INDONESIA
HTML INDONESIA
106 pengguna
Buka telegram
PHP HTML Indonesia
PHP HTML Indonesia
58 pengguna
~ Menerima Jasa Pembuatan Website untuk : Tugas & Instansi 💻 ~ Forum Diskusi Belajar Bersama ✅ ~ Promosi Jasa Minimal 1x Sehari ✅ ~ Dilarang Berbicara Kotor 🚫 ^ Other Grup : Whatsapp Group : Chat Admin untuk masuk ke Grup Whatsapp ^^
Buka telegram
Tambahkan pertanyaan
Kategori
Semua
Teknologi
Budaya / Rekreasi
Kehidupan / Seni
Ilmu Pengetahuan
Profesional
Bisnis
Pengguna
Semua
Baru
Populer
1
ALEX EPRST
Terdaftar 13 jam yang lalu
2
Daniel Gogov
Terdaftar 1 minggu yang lalu
3
工藤 芳則
Terdaftar 2 minggu yang lalu
4
Ирина Беляева
Terdaftar 2 minggu yang lalu
5
Darya Arsenyeva
Terdaftar 3 minggu yang lalu
ID
JA
© kzen.dev 2023
Sumber
stackoverflow.com
di bawah lisensi cc by-sa 3.0 dengan atribusi