-1
votes

Comment arrêter la fonction en 5 secondes? Vue.js

Ceci est mon code

let timesRun = 0;
const intervalAddImage = setInterval(function () {
  timesRun += 1;
  if (timesRun === 60) {
    clearInterval(intervalAddImage)
  }
  this.addImage();

}, 250);

intervalAddImage();


8 commentaires

Avez-vous vérifié la console pour un message d'erreur?


intervalleddimage n'est pas une fonction


Pouvez-vous montrer votre code entier? où ceci est venu de, exécutez-vous cela à partir d'objet, ou utilisez-vous un objet global / fenêtre implicite?


@jcubic Settimeout (seinterval (this.adimage, 250), 5000); ?? Dans cette fonction de cas ne s'arrêtera pas


Ce commentaire supprimé était une erreur. Vérifiez mon autre commentaire.


Avez-vous regardé le setInterval < / a> documentation? Il stipule que les intervalles peuvent être effacés à l'aide de ClearInterval .


@jcubic j'ai un code entier dans ma question précédente, Stackoverflow.com/questions/55496947/...


Ensuite, this.TimesRun sera une variable globale sur la fenêtre non accessoire de votre objet. Vous devez utiliser la fonction arrow seinterval (() => {}, x) ou utiliser fonction () {} .bind (this) ou définissez ceci sur la variable var self = ceci si cela.TimesRun supposons être votre const, alors vous devez utiliser let et n'utilisez pas ceci .


3 Réponses :


0
votes

Voici votre erreur: N'utilisez pas Ceci code> sans faire attention: vous devriez prendre le temps de comprendre Comment Ce code> fonctionne dans JavaScript .

Dans votre code, vous incrémentez this.TimesRun code>, mais vous testez sur foisRun code> qui n'est jamais incrémenté. p>

Cet échantillon fonctionnera comme vous Attendez-vous: p>

p>

let timesRun = 0; 
//const addImage = this.addImage;
const intervalAddImage = setInterval(function () {
  timesRun += 1;
  if (timesRun === 60) {
    clearInterval(intervalAddImage);
  }
  //addImage();
  console.log("Hello", timesRun);
}, 250);


3 commentaires

J'ai besoin d'adjonction


Si vous devez appeler addimage , j'ai mis à jour l'extrait. Vous trouverez des lignes pour qu'ils puissent l'activer. Une autre façon serait de Bind la fonction sur la valeur de cette , de sorte que ceci est ce que vous voulez qu'il soit à l'intérieur de la fonction.


Mais s'il vous plaît, prenez le temps de lire comment ceci fonctionne dans JavaScript, sinon, vous rencontrerez beaucoup de problèmes. développeur.mozilla.org/en-us/docs/ Web / JavaScript / Référence / ...



0
votes

donc ça marche) xxx


2 commentaires

"Intervaladdimage n'est pas une fonction"


@ Germanvaranytsya, supprimez simplement l'appel à intervaladdimage (); parce que ce n'est pas la fonction mais le nombre.



1
votes

Le code suivant exécute une tâche tous les 250ms et s'arrête après 5 secondes. J'espère que cela vous donnera une inspiration.

p>

var intervalId = setInterval(() => console.log("running"), 250);
setTimeout(() => clearInterval(intervalId), 5000);


0 commentaires