javascript - 函数的参数依次用作 javascript 中 setTimeout 函数的参数

标签 javascript settimeout

function f1()
{
  c = setTimeout(f2,200);
}
function f2()
{
 //code
}

上面的代码就很好了。但我想问的是:我可以在函数 f2() 中使用从调用环境传递的一些参数吗?即:

 function f1(v1)
    {
      c = setTimeout(f2(v1),200);
    }
    function f2(v2)
    {
     //code
    }

有效吗?因为我尝试了类似的方法,但问题是我无法使用变量 c 来清除超时。我不知道该怎么办。

最佳答案

使用Closure -

function f1(v1)
{
    c = setTimeout(f2(v1), 200);
}

function f2(v2)
{
     return function () {
         // use v2 here, and put the rest of your
         // callback code here.
     }
}

这样您就可以传递任意数量的参数。

由于您将 c 声明为全局变量(这很糟糕),因此您可以使用 - 轻松清除超时 -

clearTimeout(c);

如果您仍然无法清除超时,则仅意味着持续时间已过且回调已触发,或者其他地方出现错误。在这种情况下,请发布您用来清除超时的代码。

关于javascript - 函数的参数依次用作 javascript 中 setTimeout 函数的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18557510/

相关文章:

javascript - 为什么导航菜单上的当前页面不会保持更改?

javascript - 停止/启动一个 self 回复的功能

javascript - setTimeout 没有被调用(?)

javascript - 解决函数内部的 Promise 会导致 X(...) 不是函数错误

javascript - 使用 onblur 和 setTimeout 关闭子菜单

javascript - 分析匿名 javascript 函数 (chrome)

javascript - 让 dragula 在悬停在元素上时显示放置位置

javascript - 复选框 : disable/enable href in jQuery

javascript - Multiple Item 轮播(JS转TS文件)

javascript - javascript setTimeout 执行时间需要多倍的时间可能是什么原因?