這是我的問題。我有這個功能來測試代理服務器。爲什麼我的函數調用應該通過立即執行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