函数中的javascript中的setTimeout

时间:2013-03-29 09:02:22

标签: javascript function settimeout

我有两个功能,如下面的,

func1 = function(){
    console.log("func1 is called"); 
}

func2 = function(){
    console.log("func2 is called");
    setTimeout(func1(),10000) 
}

当我拨打电话func2()时。我得到了输出但不是预期的输出。你可以看到我在setTimeout()中使用了func2,并且我希望在执行func1之前指定一些延迟。

但是没有观察到延迟线同时打印到控制台。我在这里做错了什么,或者我错过了什么?请帮忙..

3 个答案:

答案 0 :(得分:8)

引用某个功能时,您需要取消括号。

setTimeout(func1,10000);

答案 1 :(得分:3)

在调用setTimeout的 func1 之后删除括号。

setTimeout 函数需要一个函数 reference

您的代码在打印警报后将调用func1 的结果传递给 setTimeout()

当括号跟随函数的名称时,它们会导致调用该函数。

func1 = function () {
    alert('func1 is called');
}

func2 = function(){
    console.log("func2 is called");
    // Invoke func1 and pass the return value (which is undefined) to setTimeout.  
    // An alert will be displayed immediately when func1 is invoked.
    setTimeout(func1(),10000) 
}

func2 = function(){
    console.log("func2 is called");
    // Pass a reference to func1 to setTimeout to be invoked later.
    setTimeout(func1,10000) 
}

答案 2 :(得分:2)

您还可以指定匿名函数:

setTimeout(function(){func1();},10000);