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/