In diesem Szenario, in dem eine Funktion mit setTimeout verzögert ausgeführt werden soll, stattdessen aber sofort ausgeführt wird, Das Problem liegt darin, wie die Funktion an setTimeout übergeben wird.
Um dieses Problem zu lösen, gibt es drei Ansätze, um sicherzustellen, dass es mit der gewünschten Verzögerung ausgeführt wird:
Argumente einzeln übergeben:
setTimeout(doRequest, proxytimeout, url, proxys[proxy]);
Dieses Formular übergibt zuerst die Funktion, gefolgt vom Timeout und den Argumenten der Funktion.
Verwenden Sie a Literal-String:
setTimeout('doRequest('+url+','+proxys[proxy]+')', proxytimeout);
Hier wird ein Literal-String bereitgestellt, der zur Ausführungszeit ausgewertet wird.
Anonymer Funktionsabschluss:
(function(u, p, t) { setTimeout(function() { doRequest(u, p); }, t); })(url, proxys[proxy], proxytimeout);
Dieser Ansatz beinhaltet eine anonyme Funktion, die die beabsichtigte Funktion aufruft. Der Abschluss stellt sicher, dass die in der Funktion verwendeten Werte während der gesamten Schleife konsistent bleiben.
Durch die Übernahme einer dieser Methoden können Sie die Ausführung der doRequest-Funktion effektiv mit der angegebenen Verzögerung planen.
Das obige ist der detaillierte Inhalt vonWarum wird meine Funktion „setTimeout' sofort und nicht erst nach der Verzögerung ausgeführt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!