我的JS setTimeout()参数有什么问题

时间:2016-02-16 08:59:38

标签: javascript settimeout

在以下代码段中,我无法理解为什么注释掉的行不起作用,而后面的行确实有效:

function clicked()  {
    var t1 = setInterval(print, 100);
//  setTimeout(clearInterval(t1), 16000);
    setTimeout(function(){clearInterval(t1)}, 1600);

3 个答案:

答案 0 :(得分:4)

setTimeout的第一个参数应该是一个函数。

clearInterval是一个功能。

clearInterval(t1)立即调用该函数时获得的返回值

答案 1 :(得分:1)

这是因为setTimeout的第一个参数应该是一个函数。 这就是为什么你可以给它类似“print”的东西,我假设它是你上下文中的一个函数,或者是“function(){clearInterval(t1)}”这是一个使用clearInterval的匿名函数。

但是,在t1上调用clearInterval的“clearInterval(t1)”的值是clearInterval的返回值,它可能不是函数。就是这样。

答案 2 :(得分:0)

另一种方式是:

<Window.Resources>
    <views:FirstPanelView x:Key="FirstPanelViewKey"/>
    <views:SecondPanelView x:Key="SecondPanelViewKey"/>
    <DataTemplate x:Key="DT1">
        <ContentControl Content="{StaticResource FirstPanelViewKey}" />
    </DataTemplate>
    <DataTemplate x:Key="DT2">
        <ContentControl Content="{StaticResource SecondPanelViewKey}" />
    </DataTemplate>
</Window.Resources>