Comment définir le délai d'attente dans une méthode de vue

Comment puis-je utiliser la fonction settimeout () dans une méthode vuejs?

J'ai déjà essayé quelque chose comme ça, mais cela ne fonctionne pas

fetchHole: function () { //get data }, addHole: function () { //my query add new setTimeout(function () { this.fetchHole() }, 1000) }, 

Je reçois ce message d'erreur: Uncaught TypeError: this.fetchHole is not a function

Essayez ceci: setTimeout(this.fetchHole, 1000) car this dans la fonction anonyme est attaché à cette fonction anonyme non à votre fonction principale

Ajouter un appel bind() à votre déclaration de fonction:

 setTimeout(function () { this.fetchHole() }.bind(this), 1000) 

De sorte que votre composant Vue est accessible dans la fonction.

Note latérale: @ la réponse acceptée de nospor est plus propre dans cette situation particulière. L'approche de bind est un peu plus généralisée – très utile si vous voulez faire une fonction anonyme, par exemple.

Je pense que cela fonctionne aussi.

 var self = this; setTimeout(function () { self.fetchHole() } , 1000) 

Le problème classique avec contextuel en JavaScript.

La partie suivante du code montre une solution simple – si vous utilisez ES6 avec Vuejs (configuration par défaut avec vuecli y babel). Utilisez une fonction de flèche

 setTimeout(()=>{ this.yourMethod() },1000);