我做错了什么?Javascript在一段时间内运行异常(setInterval())
我试图使用我做错了什么?Javascript在一段时间内运行异常(setInterval()),javascript,handlebars.js,Javascript,Handlebars.js,我试图使用fetch()函数循环一个json数组,一次显示8个项目,持续8秒,并重复自己的操作,但是javascript变得疯狂,过了一段时间就在数组中运行 第一次迭代很好 非常感谢您的帮助 不知道出了什么问题 $(document).ready(function () { console.log('working...'); FetchData(); }); function FetchData() { fetch(dataPath) .then(functi
fetch()
函数循环一个json数组,一次显示8个项目,持续8秒,并重复自己的操作,但是javascript变得疯狂,过了一段时间就在数组中运行
第一次迭代很好
非常感谢您的帮助
不知道出了什么问题
$(document).ready(function () {
console.log('working...');
FetchData();
});
function FetchData() {
fetch(dataPath)
.then(function (response) {
return response.json();
})
.then(function (json) {
data = json;
clearInterval();
DisplayData(data);
})
.catch(function (error) {
console.log(error);
setInterval(FetchData, 5000);
})
}
function DisplayData(data) {
let golferDisplayData = data.Golfers;
var indexOffset = 0;
$containerContentSection.html(templateMainContent(golferDisplayData.slice(indexOffset, indexOffset + 8)));
indexOffset += 7;
setInterval(() => {
console.log(indexOffset);
// console.log(indexOffset, golferDisplayData.length);
// console.log(golferDisplayData.slice(indexOffset, indexOffset + 8));
$containerContentSection.html(templateMainContent(golferDisplayData.slice(indexOffset, indexOffset + 8)));
indexOffset += 7;
if(indexOffset >= golferDisplayData.length) {
indexOffset = 0;
FetchData();
}
}, 8000);
}
我正在尝试使用
fetch()
循环一个json数组,每8秒显示8个项目,并重复自己的操作,在完成一次循环后,它应该再次提取json文件。间隔未被清除
间隔需要分配给如下变量:let myInterval=setInterval()
然后您可以像这样清除间隔:clearInterval(myInterval)
或者,由于您只在1次迭代中使用间隔并在迭代后立即清除它,因此您可以使用调用
setInterval
的setTimeout()而不是setTimeout
,创建对FetchData()
的无限调用。阅读进一步解释您需要保存intervalId
并像clearIntervalid(intervalId)
clearInterval()一样清除它代码>阅读@ritaj-bad建议,看看它是如何工作的<在这种情况下,code>setInterval
是错误的,特别是如果每次执行时都要清除它。这正是setTimeout
的目的。关于setTimeout
的评论是正确的。但是,如果仍然要使用setInterval
,则必须将其存储在变量中,然后将其作为参数传递给clearInterval
。类似于:letintervalid=setInterval(…)
thenclearInterval(intervalID)