如何将参数传递给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

回到顶部