以这种形式将函数提供给setTimeout时,将执行该函数,而不是将其传递给setTimeout。您有三种选择可以使其正常工作:
首先给出函数,然后给出超时和参数作为最后一个参数:
setTimeout(doRequest, proxytimeout, url, proxys[proxy]);
或者只是写一个将被求值的字符串:
setTimeout('doRequest('+url+','+proxys[proxy]+')', proxytimeout);第三种样式是传递一个调用该函数的匿名函数。请注意,在这种情况下,您必须在封闭状态下执行此操作,以防止值在循环中更改,因此它会有些棘手:
(function(u, p, t) { setTimeout(function() { doRequest(u, p); }, t);})(url, proxys[proxy], proxytimeout);第二种格式有点怪异,但如果参数是标量值(字符串,整数等),则仍然可以使用。第三种格式有点不清楚,因此在这种情况下,第一种选择显然将最适合您。



