Geef aan hoe u parameters kunt doorgeven aan een functie die wordt aangeroepen met behulp van setInterval
.
Mijn voorbeeld setInterval(funca(10,3), 500);
is onjuist.
Antwoord 1, autoriteit 100%
Je moet een anonieme functie maken, zodat de eigenlijke functie niet meteen wordt uitgevoerd.
setInterval( function() { funca(10,3); }, 500 );
Antwoord 2, autoriteit 15%
Voeg ze toe als parameters voor setInterval:
setInterval(funca, 500, 10, 3);
De syntaxis in uw vraag gebruikt eval, wat niet aanbevolen is oefenen.
Antwoord 3, autoriteit 15%
nu met ES5, bindmethode Functie prototype :
setInterval(funca.bind(null,10,3),500);
Antwoord 4, autoriteit 6%
setInterval(function(a,b,c){
console.log(a + b +c);
}, 500, 1,2,3);
//note the console will print 6
//here we are passing 1,2,3 for a,b,c arguments
// tested in node v 8.11 and chrome 69
Antwoord 5, autoriteit 6%
U kunt de parameter(s) doorgeven als een eigenschap van het functieobject, niet als een parameter:
var f = this.someFunction; //use 'this' if called from class
f.parameter1 = obj;
f.parameter2 = this;
f.parameter3 = whatever;
setInterval(f, 1000);
Dan heb je in je functie someFunction
toegang tot de parameters. Dit is met name handig binnen klassen waar het bereik automatisch naar de globale ruimte gaat en je verwijzingen verliest naar de klasse die setInterval heeft aangeroepen om mee te beginnen. Met deze benadering heeft “parameter2” in “someFunction”, in het bovenstaande voorbeeld, het juiste bereik.
Antwoord 6, autoriteit 4%
setInterval(function,milliseconds,param1,param2,...)
Update: 2018 – gebruik de “spread”-operator
function repeater(param1, param2, param3){
alert(param1);
alert(param2);
alert(param3);
}
let input = [1,2,3];
setInterval(repeater,3000,...input);
Antwoord 7, autoriteit 3%
U kunt een anonieme functie gebruiken;
setInterval(function() { funca(10,3); },500);
Antwoord 8, autoriteit 2%
Veruit het meest praktische antwoord is dat van tvvanfosson, ik kan je alleen een bijgewerkte versie geven met ES6:
setInterval( ()=>{ funca(10,3); }, 500);
Antwoord 9
Het citeren van de argumenten zou voldoende moeten zijn:
OK --> reloadIntervalID = window.setInterval( "reloadSeries('"+param2Pass+"')" , 5000)
KO --> reloadIntervalID = window.setInterval( "reloadSeries( "+param2Pass+" )" , 5000)
Noteer de enkele offerte '
voor elk argument.
Getest met IE8, Chrome en Firefox
10
Een andere oplossing bestaat erin om uw functie zo (als u Dynamics VAR’s hebt):
SetInterval (‘Funca (‘ + x + ‘,’ + y + ‘)’, 500);
11
U kunt een bibliotheek gebruiken met de naam Undercore JS. Het geeft een mooie wrapper op de bindmethode en is ook een veel schonere syntaxis. Laat u de functie in de opgegeven reikwijdte uitvoeren.
_. binden (functie, scope, * argumenten)
12
Ik heb hetzelfde probleem gehad met Vue-app. In mijn geval werkt deze oplossing alleen als de anonieme functie is gedeclareerd als pijl-functie, met betrekking tot de aangifte op mounted ()
Levencirkelhaak.