как установить таймаут в методе vueJs

как я могу использовать функцию settimeout () в методе vuejs?

Я уже пробовал что-то вроде этого, но он не работает

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

Я получаю это сообщение об ошибке Uncaught TypeError: this.fetchHole is not a function

Попробуйте это: setTimeout(this.fetchHole, 1000) потому что this в анонимной функции прикрепляется к этой анонимной функции не к вашей основной функции

Добавьте вызов bind() в объявление функции:

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

так что ваш компонент Vue доступен в этой функции.

Сторона примечания: принятый ответ @ nospor более чист в этой конкретной ситуации. Подход bind немного более обобщен – очень полезно, если вы хотите сделать анонимную функцию, например.

Классическая проблема с контекстуальным в JavaScript.

Следующая часть кода показывает простое решение – если вы используете ES6 с Vuejs (конфигурация по умолчанию с vuecli y babel). Используйте функцию стрелки

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

Я думаю, это тоже работает.

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