首頁 >web前端 >js教程 >為什麼我的'setTimeout”函數立即執行而不是延遲後執行?

為什麼我的'setTimeout”函數立即執行而不是延遲後執行?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-15 17:04:02680瀏覽

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

為什麼setTimeout 調度的函數會立即執行

在這種情況下,一個函數本來打算使用setTimeout 延遲執行,但卻立即執行,問題在於如何將函數傳遞給setTimeout。

要解決此問題,可以透過三種方法來確保其以所需的延遲執行:

  1. 單獨傳遞參數:

    setTimeout(doRequest, proxytimeout, url, proxys[proxy]);

    這種形式先傳遞函數,然後是超時和函數的參數。

  2. 使用文字字串:

    setTimeout('doRequest('+url+','+proxys[proxy]+')', proxytimeout);

    這裡提供了一個文字字串,它將在執行時進行評估。

  3. 匿名函數閉包:

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

    此方法涉及呼叫預期函數的匿名函數。閉包確保函數中使用的值在整個循環中保持一致。

透過採用這些方法中的任何一個,您可以有效地安排 doRequest 函數以指定的延遲執行。

以上是為什麼我的'setTimeout”函數立即執行而不是延遲後執行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn