多次快速的点击“C一下”,导致列表数据显示重复。问题影响较小

关注让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言问题分析:
<!-- HTML代码 -->
<button id="clickBtn" onclick="handleClick()">C一下</button>
<ul id="dataList"></ul>
// JavaScript代码
let isFetching = false;
function fetchData() {
// 模拟异步请求数据
return new Promise(resolve => {
setTimeout(() => {
resolve({ data: ['item1', 'item2', 'item3'] });
}, 1000);
});
}
async function handleClick() {
if (isFetching) {
return;
}
isFetching = true;
try {
const { data } = await fetchData();
// 去重处理
const dataList = document.getElementById('dataList');
dataList.innerHTML = '';
data.forEach(item => {
const li = document.createElement('li');
li.textContent = item;
dataList.appendChild(li);
});
} catch (error) {
console.error('Error fetching data: ', error);
} finally {
isFetching = false;
}
}
在以上示例代码中,当点击“C一下”按钮时,首先会检查是否正在请求数据,如果是则不做任何处理。然后通过异步请求获取数据,对数据进行去重处理后渲染到列表中,并在请求结束后重置请求状态。通过以上措施可以有效减少重复数据的渲染。