带参数的setTimeout [英] setTimeout with arguments

查看:219
本文介绍了带参数的setTimeout的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

试图解决这个问题时有点头疼。我想要做的是有一个自定义的setTimeout,参数没有必须创建一个函数来传递它。让我用代码解释一下:



要避免:

  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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆