Je veux exécuter une fonction particulière toutes les 5 minutes. Si j'écris du code comme ceci: puis J'ai obtenu le comportement souhaité en créant Un clone de f code> semble exécuter une fois et plus jamais. P>
f code> appelé
f2 code>:
f code> appels
d3.timer (f2) code> et
f2 Code> Call
d3.Timer (f) code>. Cela semble être un piratage laid. Y a-t-il une meilleure façon? P> P>
3 Réponses :
Ceci ressemble à un travail pour la méthode Standard JavaScript Si vous en avez besoin pour exécuter une animation à chaque invocation, c'est là que < Code> d3.Timer code> serait utile - sinon, la standard Sintinval () Code> Méthode:
seinterval code> et
SetTimeout code> est susceptible d'être plus facile. p> p>
Désolé si mon exemple n'était pas clair: En réalité, la console.log ("hi") code> est en effet du code d'animation D3. Je ne sais toujours pas pourquoi je voudrais (ou quiconque) vouloir utiliser
d3.time code> au lieu d'un code de minuterie javascript standard comme
seinterval code>. En fait, pourquoi
D3.TIMER CODE> existe-t-il même si nous pouvions simplement utiliser
Settimeout code>?
Ok, je pense Ce fil fait la différence dégager. Merci pour ton aide!
Je pense @ Réponse de NRABINOWITZ est probablement le meilleur et le meilleur, mais si vous souhaitez vraiment utiliser d3.ticer code>, voici comment vous le feriez.
var interval = 1000; // one second in milliseconds
var makeCallback = function() {
// note that we're returning a new callback function each time
return function() {
console.log('OH HAI!!');
d3.timer(makeCallback(), interval);
return true;
}
};
d3.timer(makeCallback(), interval);
Pour moi, en utilisant une projection GEO, j'ai vu une amélioration de la performance de 100% en utilisant cette technique de minuterie D3 - c'est-à-dire une utilisation de la CPU de 100% à 1% pour une animation équivalente. Je suppose que c'est parce qu'une image d'animation est demandée.
En outre, l'utilisation de la minuterie garantit que lorsque le référencier est disponible, l'animation ne fonctionne pas lorsque l'onglet n'est pas au premier plan
On dirait que d3.Interval est une chose, et est censé être un remplaçant pour seinterval: https://github.com/d3/d3-timer#Interval