这是我的问题。我有这个功能来测试代理服务器。为什么我的函数调用应该通过立即执行setTimeout来调度?
function crawl() {
var oldstatus = document.getElementById('status').innerHTML;
document.getElementById('status').innerHTML = oldstatus + "Crawler Started...<br />";
var url = document.getElementById('url').value;
var proxys = document.getElementById('proxys').value.replace(/\n/g,',');
var proxys = proxys.split(",");
for (proxy in proxys) {
var proxytimeout = proxy*10000;
setTimeout(doRequest(url,proxys[proxy]), proxytimeout);
}
}
我想“doRequest()”功能可以在称为约10秒的时间间隔,但即使采用的功能被立即调用的setTimeout()。
欢迎任何想法,谢谢。
PS:即使我为'proxytimout'放置了一个任意值,它也没有任何作用。
纠正我,如果我错了,但因为这是发生在一个循环内,你提供的第二种方法将无法正常工作。 'proxy'的值将会改变,因为没有创建闭包。 – nickf 2010-01-10 14:13:16
@nickf:我正准备这么说。另外,第三个选项违反'eval是邪恶'。 – SLaks 2010-01-10 14:13:58
@nickf,你是真的,我忽略了这一点。我已经更新了我的答案。 – 2010-01-10 14:28:04