如何将参数传递给setTimeout()回调?
我有一些如下的JavaScript代码:
function statechangedPostQuestion(){
//alert("statechangedPostQuestion");
if (xmlhttp.readyState==4)
{
var topicId = xmlhttp.responseText;
setTimeout("postinsql(topicId)",4000);
}
}
function postinsql(topicId)
{
//alert(topicId);
}
我收到topicId
未定义的错误,在使用该setTimeout()
功能之前,一切都在工作。
我希望postinsql(topicId)
一段时间后调用我的函数。我该怎么办?
回答:
setTimeout(function() {
postinsql(topicId);
}, 4000)
您需要将匿名函数作为参数而不是字符串作为参数,后一种方法甚至不符合ECMAScript规范,但浏览器比较宽松。这是正确的解决方案,在使用setTimeout()
或时setInterval()
,永远不要依赖于将字符串作为“函数”进行传递,因为它必须进行求值并且不正确,所以速度较慢。
回答:
正如Hobblin在对问题所说的那样,现在您可以使用将参数传递给setTimeout内部的函数Function.prototype.bind()
。
setTimeout(postinsql.bind(null, topicId), 4000);
以上是 如何将参数传递给setTimeout()回调? 的全部内容, 来源链接: utcz.com/qa/402003.html