SetTimeout sering digunakan untuk menunda eksekusi fungsi, dan digunakan sebagai:
Salinan kode adalah sebagai berikut:
setTimeout (function () {
...
}, timeout);
Terkadang, setTimeout (fungsi ..., 0) digunakan untuk pemrosesan asinkron; Misalnya:
Salinan kode adalah sebagai berikut:
fungsi f () {
… // Bersiaplah
setTimeout (function () {
…. // Lakukan sesuatu
}, 0);
kembali …;
}
Sebelum prosesor fungsi diatur oleh SetTimeout, Function F returns;
Berhati -hatilah saat menggunakan pemrosesan asinkron, terutama saat menggunakan fitur penutupan;
Misalnya:
Salinan kode adalah sebagai berikut:
untuk (var i = 0; i <10; i ++) {
setTimeout (function () {
console.log (i);
}, 0);
}
Untuk siswa yang menggunakan metode ini untuk pertama kalinya, mereka cenderung berpikir bahwa program akan mencetak 0 ... 9, tetapi hasilnya adalah 10 memang dicetak 10;
Masalahnya adalah bahwa ketika loop selesai, fungsi dieksekusi, dan saya telah menjadi 10, dan 10 digunakan dalam konsol.log (i)!
Tujuan menambahkan Anda adalah mencetak 0 ... 9, sehingga Anda dapat mengubah metode dan menggunakan parameter fungsi untuk menyimpan 0… .9 (sebenarnya, itu juga menggunakan penutupan):
Salinan kode adalah sebagai berikut:
untuk (var i = 0; i <10; i ++) {
setTimeout ((function (i) {
return function () {
console.log (i);
}
}) (i), 0);
}