Bitte geben Sie an, wie Parameter an eine Funktion übergeben werden, die mit using aufgerufen wird setInterval
.
Mein Beispiel setInterval(funca(10,3), 500);
ist falsch.
javascript
parameters
setinterval
Rakesh
quelle
quelle
.setInterval(func, delay[, param1, param2, ...]);
Antworten:
Sie müssen eine anonyme Funktion erstellen, damit die eigentliche Funktion nicht sofort ausgeführt wird.
quelle
function createInterval(f,dynamicParameter,interval) { setInterval(function() { f(dynamicParameter); }, interval); }
Nennen Sie es dann alscreateInterval(funca,dynamicValue,500);
Offensichtlich können Sie dies für mehr als einen Parameter erweitern. Verwenden Sie bitte aussagekräftigere Variablennamen. :)funca
?jetzt mit ES5, Bindungsmethode Funktionsprototyp:
Referenz hier
quelle
console.log.bind(null)("Log me")
wird werfenIllegal invocation
, aberconsole.log.bind(console)("Log me")
wird wie erwartet funktionieren. Dies liegt daran,console.log
dassconsole
alsthis
Argument erforderlich ist .Fügen Sie sie als Parameter zu setInterval hinzu:
Die Syntax in Ihrer Frage verwendet eval, was nicht empfohlen wird.
quelle
Sie können die Parameter als Eigenschaft des Funktionsobjekts und nicht als Parameter übergeben:
Dann haben Sie in Ihrer Funktion
someFunction
Zugriff auf die Parameter. Dies ist besonders nützlich in Klassen, in denen der Bereich automatisch in den globalen Bereich verschoben wird und Sie Verweise auf die Klasse verlieren, die zunächst setInterval aufgerufen hat. Bei diesem Ansatz hat "parameter2" in "someFunction" im obigen Beispiel den richtigen Gültigkeitsbereich.quelle
quelle
Sie können eine anonyme Funktion verwenden.
quelle
Update: 2018 - Verwenden Sie den Operator "Spread"
quelle
Die mit Abstand praktischste Antwort ist die von tvanfosson. Ich kann Ihnen nur eine aktualisierte Version mit ES6 geben:
quelle
Das Zitieren der Argumente sollte ausreichen:
Beachten Sie das einfache Anführungszeichen
'
für jedes Argument.Getestet mit IE8, Chrome und FireFox
quelle
Ich weiß, dass dieses Thema so alt ist, aber hier ist meine Lösung zum Übergeben von Parametern in der
setInterval
Funktion.Html:
JavaScript:
quelle
timer
), aber wie geht es IhnenclearInterval()
in diesem Szenario?Das funktioniert
setInterval("foo(bar)",int,lang);
... Jon Kleiser hat mich zur Antwort geführt.quelle
Eine andere Lösung besteht darin, Ihre Funktion wie folgt zu übergeben (wenn Sie dynamische Variablen haben): setInterval ('funca (' + x + ',' + y + ')', 500);
quelle
Sie können eine Bibliothek namens Unterstrich js verwenden. Es gibt einen schönen Wrapper für die Bindemethode und ist auch eine viel sauberere Syntax. Damit können Sie die Funktion im angegebenen Bereich ausführen.
http://underscorejs.org/#bind
_.bind (Funktion, Umfang, * Argumente)
quelle
Dieses Problem wäre eine schöne Demonstration für die Verwendung von Verschlüssen. Die Idee ist, dass eine Funktion eine Variable des äußeren Bereichs verwendet. Hier ist ein Beispiel...
Die Funktion "makeClosure" gibt eine andere Funktion zurück, die Zugriff auf die äußere Bereichsvariable "name" hat. Grundsätzlich müssen Sie also alle Variablen an die Funktion "makeClosure" übergeben und sie in der Funktion verwenden, die der Variablen "ret" zugewiesen ist. Bezeichnenderweise führt setInterval die Funktion aus, die "ret" zugewiesen ist.
quelle
Ich hatte das gleiche Problem mit der Vue-App. In meinem Fall funktioniert diese Lösung nur, wenn die anonyme Funktion als Pfeilfunktion deklariert wurde, was die Deklaration am
mounted ()
Life Circle Hook betrifft.quelle