使用setTimeout()和.call()

时间:2012-04-29 14:09:13

标签: javascript settimeout

尝试将setTimeout设置为使用.call()方法进行的函数调用时,我有点困惑。

基本上,我有一个函数引用数组,然后逐个逐步执行它们并以特定的setTimeout间隔调用它们。第一个函数触发aok,但第二个函数没有,我在js控制台中遇到一个我不明白的错误 - 错误是 -

未捕获的TypeError:对象73没有方法'call'

代码:

        function scene1(){             
            alert("boo");
        }

        function scene2(){          
            alert("boo2");
        }            

        var arrAnimation = [];
        arrAnimation[0] = scene1;                   
        arrAnimation[1] = scene2;                 

        //step through the array
        for (var i = 0; i < arrAnimation.length; i++){
                setTimeout(arrAnimation[i],3000).call();                  
        }  

任何帮助都会非常感激。 丹

2 个答案:

答案 0 :(得分:3)

您不需要使用call - 您只需将该功能传递给setTimeout,它就会自动运行:

setTimeout(arrAnimation[i],3000);

关于错误本身的FYI - setTimeout会返回一个数字作为句柄,如果您需要,可以在以后取消超时。数字没有call函数。

答案 1 :(得分:1)

您在错误的位置使用.call方法。你走了:

http://jsfiddle.net/JkLk2/