第一次迭代后,由于变量i未定义,因此setTimeout失败,结果是我在控制台中看到pollundefined错误

请原谅,我是一个Java专家,对UI方面的了解很少

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);
}

最佳答案

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);
     }

关于javascript - setTimeout在第一次迭代后失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23664436/

10-13 00:44