Используя функцию временной задержки в JavaScript

Я пытаюсь установить значения ключей localStorage после того, как определенное условие становится истинным, но подождите 2 секунды, прежде чем оно сможет обновить значение ключа localStorage.

Это то, что я пытаюсь сделать, но он выдает исключение, и когда он пытается установить значение localStorage

if(tempArray.length <= 0){                               
   setTimeout(function(){
       this.storage.set(achkey,1);                              
   },2000);                                   
}

Исключение говорит, что переменная achkey не определена, хотя я могу использовать ее вне функции setTimeout. Как мне реализовать задержку и правильно установить значения внутри? Я использую движок ImpactJS, который использует JavaScript. Я также использую плагин для своего localStorage.

1 ответ

Решение

Вам нужно кешировать this, Как только вы вводите setTimeoutанонимная функция, this теперь относится к области действия функции, которую вы только что объявили.

if(tempArray.length <= 0){                               
   var self = this; // Cache the current scope's `this`
   setTimeout(function(){
       self.storage.set(achkey,1);                              
   },2000);                                   
} 
Другие вопросы по тегам