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

Mary-Kate Olsen
Lepaskan: 2024-11-15 17:04:02
asal
598 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!

sumber:php.cn
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