第一次迭代后,由于变量i未定义,因此setTimeout失败,因此我在控制台中看到pollundefined错误
请原谅,我是一个java人,对UI Side知之甚少
var symbols = [ "ONE","TWO"];
var i = 0;
$(document).ready(function () {
callPoll();
});
function callPoll() {
poll(symbols[i]);
i++;
if (i < symbols.length)
setTimeout(callPoll, 1500);
}
setTimeout(callPoll, 3000);
function poll(value) {
alert('poll'+value);
}
答案 0 :(得分:5)
i
未定义,symbols[i]
未定义。您正在启动序列两次,一次是setTimeout(callPoll, 3000);
,一次是$(document).ready
。您正在设置一个在i
超出symbols
条目范围后触发的呼叫。删除对setTimeout
的第一个电话。
var symbols = [ "ONE","TWO"];
var i = 0;
$(document).ready(function () {
callPoll();
}
);
function callPoll() {
poll(symbols[i]);
i++;
if (i < symbols.length) {
setTimeout(callPoll, 1500);
}
else {
// reset cycle
i = 0;
setTimeout(callPoll, 3000);
}
}
function poll(value)
{
alert('poll'+value);
}
答案 1 :(得分:1)
您没有检查poll()
是否在范围内,而是在调用i
。像这样重新订购callPoll()
:
function callPoll() {
if (i < symbols.length) {
poll(symbols[i]);
i++;
setTimeout(callPoll, 1500);
}
}
答案 2 :(得分:0)
是的,设置
if (i < symbols.length-1)
setTimeout(callPoll, 1500);
答案 3 :(得分:0)
这不是因为setTimeout
的回调函数没有&#34;见&#34; i
,但因为它超出symbols
数组范围。
电话订单将是:
i == 1
callPoll
setTimeout
的i == 2
setTimeout
的callPoll;输入i == 2
,因此调用poll
时symbols[2]
未定义。