带有变量传递的变量的setTimeout

时间:2017-07-17 10:09:19

标签: javascript

在java脚本中执行某些功能之前我需要延迟。我可以使用setTimeout,但问题是我有两个传递给函数的变量。在这种情况下我需要为setTimeout设置语法。任何人都可以帮忙吗?

3 个答案:

答案 0 :(得分:5)

在任何现代JavaScript环境中,您可以在间隔之后包含参数:

setTimeout(foo, 2000, 'a', 'b');

这将在2000ms之后调用foo('a', 'b')

在过时的JavaScript环境(例如某些过时浏览器中的环境)中,您必须使用包装函数:

setTimeout(function() {
    foo('a', 'b');
}, 2000);

,这两者之间存在很大差异:在第一种情况下,当您致电setTimeout结果时,会评估所有表达式该评估的内容是发送到setTimeout并最终发送到foo的内容,而使用包装函数,评估发生在延迟之后,稍后调用foo时。

使用Function#bind

,您可以获得与第一个相同的评估行为
setTimeout(foo.bind(null, 'a', 'b'), 2000);

以下是差异的一个例子:



var a = 1;
setTimeout(foo, 100, a);            // foo will show 1
a = 2;
setTimeout(foo.bind(null, a), 100); // foo will show 2
setTimeout(function() {
    foo(a);                         // foo will show 3 even though
                                    // we set it *after* scheduling
                                    // the call
}, 100);
a = 3;

function foo(value) {
  console.log(value);
}




答案 1 :(得分:1)

setTimout(function () {
  yourfunction(variable1, variable2)
}, delay)

答案 2 :(得分:1)

Dictionary's