When using setTimeout
, you have to put the code you want to execute into a string:
setTimeout('alert("foobar!");', 1000);
However, I want to execute a function to which I have a reference in a variable. I want to be able to do this:
var myGreatFunction = function() { alert("foobar!"); };
// ...
setTimeout('myGreatFunction();', 1000);
(Though in real life, the alert is a lengthier bit of code and myGreatFunction
gets passed around as a parameter to other functions, within which the setTimeout
is called.)
Of course, when the timeout triggers, myGreatFunction
isn't a recognised function so it doesn't execute.
I wish javascript let me do this, but it doesn't:
setTimeout(function() { myGreatFunction(); }, 1000);
Is there a nice way round this?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…