Heim > Artikel > Web-Frontend > Warum wird meine setTimeout-Funktion sofort ausgeführt?
Unerwartete sofortige Funktionsausführung mit setTimeout
Beim Versuch, einen Funktionsaufruf in bestimmten Intervallen zu planen, stößt der Benutzer auf ein Problem, bei dem setTimeout Funktion führt die Funktion trotz des angegebenen Timeouts sofort aus. Die doRequest-Funktion sollte in 10-Sekunden-Intervallen aufgerufen werden, aber sie wird sofort aufgerufen.
Der Grund für diese sofortige Ausführung liegt in der Art und Weise, wie die setTimeout-Funktion aufgerufen wird. Der folgende Codeausschnitt veranschaulicht das Problem:
setTimeout(doRequest(url, proxys[proxy]), proxytimeout);
In diesem Code wird die doRequest-Funktion als erstes Argument an setTimeout übergeben, aber die Funktion wird sofort ausgeführt und nicht geplant.
Lösungen:
Um dieses Problem zu beheben und sicherzustellen, dass doRequest geplant wird, gibt es drei alternative Möglichkeiten, setTimeout zu verwenden:
Übergeben Sie den Funktionsnamen als Zeichenfolge:
setTimeout('doRequest(' + url + ',' + proxys[proxy] + ')', proxytimeout);
Verwenden Sie eine anonyme Funktion:
(function(u, p, t) { setTimeout(function() { doRequest(u, p); }, t); })(url, proxys[proxy], proxytimeout);
Übergeben Sie zuerst den Funktionsnamen und dann die Parameter:
setTimeout(doRequest, proxytimeout, url, proxys[proxy]);
Das obige ist der detaillierte Inhalt vonWarum wird meine setTimeout-Funktion sofort ausgeführt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!