Rumah > hujung hadapan web > tutorial js > Mengapakah fungsi `setTimeout` saya dilaksanakan serta-merta dan bukannya selepas kelewatan?

Mengapakah fungsi `setTimeout` saya dilaksanakan serta-merta dan bukannya selepas kelewatan?

Mary-Kate Olsen
Lepaskan: 2024-11-15 17:04:02
asal
724 orang telah melayarinya

Why is my `setTimeout` function being executed immediately instead of after the delay?

Mengapa Perlaksanaan Segera Fungsi SetTimeout-Scheduled Berlaku

Dalam senario ini, di mana fungsi bertujuan untuk dilaksanakan dengan kelewatan menggunakan setTimeout tetapi sebaliknya dilaksanakan serta-merta, isunya terletak pada cara fungsi itu dihantar ke setTimeout.

Untuk menyelesaikan isu ini, terdapat tiga pendekatan untuk memastikan ia dilaksanakan dengan kelewatan yang diingini:

  1. Luluskan Argumen Secara Individu:

    setTimeout(doRequest, proxytimeout, url, proxys[proxy]);
    Salin selepas log masuk

    Borang ini melepasi fungsi dahulu, diikuti dengan tamat masa dan hujah fungsi.

  2. Gunakan Rentetan Tersurat:

    setTimeout('doRequest('+url+','+proxys[proxy]+')', proxytimeout);
    Salin selepas log masuk

    Di sini, rentetan tersurat disediakan, yang akan dinilai pada masa pelaksanaan.

  3. Penutupan Fungsi Tanpa Nama:

    (function(u, p, t) {
        setTimeout(function() { doRequest(u, p); }, t);
    })(url, proxys[proxy], proxytimeout);
    Salin selepas log masuk

    Pendekatan ini melibatkan fungsi tanpa nama yang memanggil fungsi yang dimaksudkan. Penutupan memastikan bahawa nilai yang digunakan dalam fungsi kekal konsisten sepanjang gelung.

Dengan menggunakan mana-mana kaedah ini, anda boleh menjadualkan pelaksanaan fungsi doRequest secara berkesan dengan kelewatan yang ditentukan.

Atas ialah kandungan terperinci Mengapakah fungsi `setTimeout` saya dilaksanakan serta-merta dan bukannya selepas kelewatan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan