Saya tidak bisa menjalankan .delay
metode di jQuery:
$.delay(3000); // not working
$(queue).delay(3000); // not working
Saya menggunakan loop sementara untuk menunggu sampai nilai perubahan yang tidak terkontrol lebih besar dari atau sama dengan yang lain dan saya tidak dapat menemukan cara untuk menghambat eksekusi selama X detik.
Jawaban:
$ .delay digunakan untuk menunda animasi dalam antrian, bukan menghentikan eksekusi.
Alih-alih menggunakan loop sementara, Anda perlu memanggil metode yang melakukan pemeriksaan setiap detik menggunakan
setTimeout
:sumber
setTimeout()
.Anda juga dapat menunda beberapa operasi dengan cara ini:
sumber
EST setTimeout
Sunting: 204586560000 ms adalah perkiraan waktu antara pertanyaan awal dan jawaban ini ... dengan asumsi saya menghitung dengan benar.
sumber
delay
Fungsi jQuery dimaksudkan untuk digunakan dengan efek dan efek antrian, lihatdelay
dokumen dan contoh di dalamnya:Jika Anda ingin mengamati variabel untuk perubahan, Anda bisa melakukan sesuatu seperti
sumber
JavaScript
setTimeout
adalah solusi yang sangat baik:The
delay
fungsi dalam jQuery sebagian besar digunakan untuk menunda animasi dalam antrian animasi jQuery.sumber
delay()
tidak menghentikan aliran kode lalu menjalankannya kembali. Tidak ada cara praktis untuk melakukannya dalam JavaScript. Semuanya harus dilakukan dengan fungsi yang menerima panggilan balik sepertisetTimeout
yang disebutkan orang lain.Tujuan dari jQuery
delay()
adalah untuk membuat antrian animasi menunggu sebelum dieksekusi. Jadi misalnya$(element).delay(3000).fadeIn(250);
akan membuat elemen memudar setelah 3 detik.sumber
Hanya javascript Ini akan berfungsi tanpa jQuery
sumber
Javascript adalah bahasa pemrograman yang tidak sinkron sehingga Anda tidak dapat menghentikan eksekusi untuk sementara waktu; satu-satunya cara Anda dapat [pseudo] menghentikan eksekusi menggunakan setTimeout () yang bukan penundaan tetapi "fungsi panggilan balik tertunda".
sumber
Jika Anda menggunakan fitur ES6 dan Anda berada dalam fungsi async, Anda dapat secara efektif menghentikan eksekusi kode untuk waktu tertentu dengan fungsi ini:
Ini adalah bagaimana Anda menggunakannya:
Ini akan berhenti untuk jumlah milidetik yang diminta, tetapi hanya jika Anda berada dalam fungsi async . Contoh di bawah ini:
sumber