带参数的setTimeout [英] setTimeout with arguments
问题描述
要避免:
function makeTimeout(serial){
serial.close();
}
setTimeout(makeTimeout(sp.name),250);
我想要做的就是以某种方式拨打1班次:
setTimeout(function(arg1){....}(argument_value),250);
可以这样做,还是只能传递无参数函数?
您可以使用给定的参数传递一个匿名函数,该函数调用 makeTimeout
:
setTimeout(function(){
makeTimeout(sp.name);
},250);
还可以使用 bind
:
setTimeout(makeTimeout.bind(this,sp.name),250);
然而,此功能是ECMAScript第5版功能,尚未在所有主流浏览器中支持。为了兼容性,您可以包含 bind
的源,可在MDN上获得,允许您在本机不支持它的浏览器中使用它。
DEMO 。
having a bit of a headache on trying to work this out. What I want to do is have a custom setTimeout with arguments with out having to create a function to pass it. Let me explain by code:
Want to avoid:
function makeTimeout(serial){
serial.close();
}
setTimeout(makeTimeout(sp.name), 250);
what I want to do is somehow just call a 1 liner by like:
setTimeout(function(arg1){ .... }(argument_value), 250);
Can this be done or can you only pass in a no argument function?
You can pass it an anonymous function that invokes makeTimeout
with the given arguments:
setTimeout(function () {
makeTimeout(sp.name);
}, 250);
There's also an alternative, using bind
:
setTimeout(makeTimeout.bind(this, sp.name), 250);
This function, however, is an ECMAScript 5th Edition feature, not yet supported in all major browsers. For compatibility, you can include bind
's source, which is available at MDN, allowing you to use it in browsers that don't support it natively.
DEMO.
这篇关于带参数的setTimeout的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!