2015-06-30 3 views
0

Я определил переменную для функции setTimeout, чтобы позже ее очистить. Эта часть работает. У меня возникают проблемы с вызовом функции setTimeout из переменной, и я думаю, что я не понимаю синтаксис.Вызов функции setTimeout из переменной

var idOne = setTimeout(function() { 
    //do stuff here 
    custom(); //callback 
}, 2000); 

function custom() { 
    //do stuff here 
    idOne; 
} 

custom(); 

idOne; В частности, часть я чувствую, что должно быть не так. JsHint говорит, что ничего не делает. Я не могу понять синтаксис.

EDIT

Понял! Вот окончательный код!

var idOne; 
var timeoutOne = function(){ 
    idOne = setTimeout(function(){ 
     //stuff 
     custom(); 
    }, 2000); 
} 

function custom() { 
    //do stuff 
    timeoutOne(); 
} 

, а затем, когда я хочу, чтобы очистить его, я использую:

clearTimeout(idOne); 
+1

Что именно вы пытаетесь сделать? переменная 'idOne' будет просто значением int, которое является ссылкой на таймер, который вы сохранили. Кроме того, 'do' является зарезервированным ключевым словом: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#Reserved_keywords_as_of_ECMAScript_6 –

+0

' do' - это ключевое слово. Это не должно работать вообще. При этом возвращение 'setTimeout' просто используется для использования clearTimeout, если вы решите, что не хотите запускать функцию в конце концов. – Zeta

+0

Я хочу, чтобы setTimeout был связан с переменной, поэтому я могу clearTimeout (переменная). Я хочу запустить этот setTimeout из переменной в функции. Я новичок в этом. не понимал, что это было использовано. Я изменю его. –

ответ

0

функция SetTimeout возвращает Number, который может быть использован для clearTimeout. Я предполагаю, что вы хотите сделать, это определить функцию

var myFunction = function() { 
    idOne = setTimeout(function() { 
     custom(); 
    }, 2000); 
} 

function custom() { 
    myFunction(); 
} 

custom(); 

и, наконец, clearTimeout:

clearTimeout(idOne); 
+0

мог бы я очистить его с помощью clearTimeout (idOne) ;? Спасибо за помощь! –

+0

в этом случае, проверьте обновление, теперь вы можете 'clearTimeout (idOne);' – Khalid

+0

'cleartimout (idOne)' возможно только потому, что 'idOne' является глобальной переменной. Когда объявлено, 'var' не учитывается. это делает переменную неявным глобальным – jasonscript

Смежные вопросы