JS中在一个方法中在定时任务开始时有个加载得标志,在定时任务结束时消除
时间: 2024-12-16 21:21:43 浏览: 1
页面加载事件、页面定时任务
在 JavaScript 中,为了在定时任务开始和结束时管理加载标志,你可以使用闭包(Closure)的概念以及一个布尔变量来跟踪状态。下面是一个例子:
```javascript
let isLoading = false; // 定义一个全局变量作为加载标志
function loadImage(url) {
return new Promise((resolve, reject) => { // 使用Promise封装异步操作
if (isLoading) {
console.log("图片正在加载,请稍候...");
return; // 如果正在加载,直接返回,避免多次请求
}
isLoading = true; // 设置加载标志为true
const img = new Image();
img.onload = function() {
resolve('图片加载成功');
isLoading = false; // 加载结束后清除标志
};
img.onerror = function() {
reject('图片加载失败');
isLoading = false; // 加载失败也清除标志
};
img.src = url;
// 定时器在这里通常不是必需的,但如果需要延时,可以在img.onload之前添加
// setTimeout(() => {
// img.src = url;
// }, 5000); // 假设5秒后手动加载
});
}
// 调用函数,当图片加载完毕或出错时,控制台会打印相应信息
loadImage('path/to/image.jpg')
.then(() => console.log('成功'))
.catch(() => console.error('失败'));
```
在这个例子中,`isLoading` 会被设置为 `true` 开始加载,并在图像加载完成后或加载失败后自动变为 `false`。
阅读全文