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
Nikolay Dyankov
Nikolay Dyankov
Question

Bagaimana cara menghapus semua interval?

Saya menggunakan

varName = setInterval(function() { ... }, 1000);

untuk mengatur beberapa interval dalam plugin jquery yang saya tulis, tetapi ketika plugin dimuat ulang, saya perlu menghapus interval tersebut. Saya mencoba menyimpannya dalam variabel, seperti ini:

(function($){
$.mosaicSlider = function(el) {
    var base = this;        
    var transitionInterval, mainInterval;

...

base.init = function() {
    mainInterval = setInverval(function() { ... }, 1000);
}

base.grid = function() {
    this.transition() = function() {
         transitionInterval = setInterval(function(...) {
    }
}

base.init();

Dan saya mencoba menghapus interval-interval tersebut di fungsi base.init(), seperti ini:

clearInterval(transitionInterval);
clearInterval(mainInterval);

Dan seperti ini:

window.oldSetInterval = window.setInterval;
window.setInterval = new function(func, interval) {  }
40 2011-12-26T11:57:19+00:00 3
Ciro  Santilli 新疆改造中心法轮功六四事件
Ciro Santilli 新疆改造中心法轮功六四事件
Pertanyaan edit 6 Januari 2016 в 8:35
Pemrograman
javascript
jquery
set
 Zirak
Zirak
26 Desember 2011 в 1:06
2011-12-26T13:06:59+00:00
Lebih
Sumber
Sunting
#15052276

Simpanlah mereka dalam sebuah objek. Karena Anda satu-satunya yang membuat interval-interval ini, dan Anda tahu apa itu, Anda dapat menyimpannya dan kemudian mengacaukannya sesuai keinginan Anda. Saya akan membuat objek yang didedikasikan hanya untuk itu, sesuatu seperti:

var interval = {
    // to keep a reference to all the intervals
    intervals : new Set(),

    // create another interval
    make(...args) {
        var newInterval = setInterval(...args);
        this.intervals.add(newInterval);
        return newInterval;
    },

    // clear a single interval
    clear(id) {
        this.interals.delete(id);
        return clearInterval(id);
    },

    // clear all intervals
    clearAll() {
        for (var id of this.intervals) {
            this.clear(id);
        }
    }
};

Pertanyaan pertama Anda mungkin

Mengapa membuat objek terpisah hanya untuk itu?

Well Watson, ini untuk menjaga interval buatan tangan Anda yang terkait dengan plugin/proyek Anda jauh dari mata-mata, sehingga Anda tidak akan mengacaukan interval lain yang diatur di halaman yang tidak terkait dengan plugin Anda.

Ya, tapi mengapa saya tidak bisa menyimpannya di dalam objek dasar?

Anda tentu saja bisa, tetapi saya pikir cara ini jauh lebih bersih. Ini memisahkan logika yang Anda lakukan di basis Anda dengan logika timeout yang aneh.

Mengapa Anda menyimpan interval di dalam Set dan bukan array?

Akses lebih cepat dan sedikit kode yang lebih bersih. Anda bisa memilih salah satu cara, sungguh.

 Zirak
Zirak
Jawaban edit 12 Januari 2019 в 3:40
58
0
Solution / Answer
Sudhir Bastakoti
Sudhir Bastakoti
26 Desember 2011 в 12:00
2011-12-26T12:00:43+00:00
Lebih
Sumber
Sunting
#15052249

Anda bisa melakukan seperti,

var interval_id = window.setInterval("", 9999); // Get a reference to the last
                                                // interval +1
for (var i = 1; i < interval_id; i++)
        window.clearInterval(i);
//for clearing all intervals
Rob W
Rob W
Jawaban edit 26 Desember 2011 в 1:15
47
0
Shujaath Khan
Shujaath Khan
23 Februari 2016 в 7:45
2016-02-23T07:45:31+00:00
Lebih
Sumber
Sunting
#15052285

Intialisasi Timer dan atur sebagai objek jendela. Window.myInterval akan menyimpan ID dari Timer.

seperti window.myInterval = setInterval(function() { console.log('hi'); }, 1000);

Untuk menghapus Interval Anda dapat menulis seperti

if(window.myInterval != undefined && window.myInterval != 'undefined'){
    window.clearInterval(window.myInterval);
    alert('Timer cleared with id'+window.myInterval);
}
 YakovL
YakovL
Jawaban edit 5 November 2018 в 8:10
8
0
Related communities 2
JavaScript Indonesia
JavaScript Indonesia
16 345 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
jQuery Indonesia
jQuery Indonesia
374 pengguna
Learning jQuery & Solve Problem
Buka telegram
Tambahkan pertanyaan
Kategori
Semua
Teknologi
Budaya / Rekreasi
Kehidupan / Seni
Ilmu Pengetahuan
Profesional
Bisnis
Pengguna
Semua
Baru
Populer
1
Daniel Gogov
Terdaftar 2 hari yang lalu
2
工藤 芳則
Terdaftar 1 minggu yang lalu
3
Ирина Беляева
Terdaftar 1 minggu yang lalu
4
Darya Arsenyeva
Terdaftar 2 minggu yang lalu
5
anyta nuam-nuam (LapuSiK)
Terdaftar 2 minggu yang lalu
ID
JA
© kzen.dev 2023
Sumber
stackoverflow.com
di bawah lisensi cc by-sa 3.0 dengan atribusi