我有一个 for 循环,它正在运行需要动态数字的超时函数,但在某些情况下,我得到的是最终结果而不是增量。
这是我的代码(ps是的,我意识到在for循环中设置'start'变量并不理想):
var new_answer_start = 0;
var seconds = 0;
for (start=0; start<50; start++) {
new_answer_start = new_answer_start + 50;
seconds = seconds + 10000; //10 seconds
setTimeout(function(){reloadXMLDoc(xmlurl, new_answer_start);},seconds);
}
我想要完成的是,每 10 秒增加一次函数将以等于 50 的增量运行 new_answer_start。相反,我每 10 秒得到一次函数输出,每次从 2500 开始(50 后的最后一组数字循环)。我之前遇到过类似的问题,与闭包有关,然后我使用“let”来修复它。但是,当我尝试时:
let new_answer_start = new_answer_start + 50;
我开始收到 NaN(不是数字)错误。我认为超时会以秒为单位增加(10、20、30 等)但不是发送到函数的变量,这很奇怪。我假设这是因为一旦函数在 10 秒后运行,变量增量已经完成到最后。那么如何将“固定”数字发送到函数?
在这里对类似问题进行了研究之后,我还尝试将数字放入闭包中:
setTimeout(function(){reloadXMLDoc(xmlurl, (new_answer_start));},seconds);
但这仍然从 2500 开始输出。