Pass parameters in setInterval functie

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);

Referentie hier


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 someFunctiontoegang 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);

Snippet uitvouwen


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.

http://underscorejs.org/#bind

_. 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.

Other episodes