JavaScript - 页面中的锁
在JS中很多时候做请求数据,或者防止重复提交等过程中,我们都会在事件之后添加一个标识符,避免用户重复请求,等请求结束后再恢复标识符。
1、这种比较固定,没有加载完成不会再次触发函数;直到请求结束后;
let state = false;
function GetMsg(){
if(state){
return;
}
state = true;
return fetch('api.php').then(res=>{
state = false;
}).catch(res=>{
state = false;
})
}
2、相比上面的形式,这种锁比较灵活,函数可以多次触发,以最新的请求为准,其他的抛弃处理;
let state = 0;
function GetMsg(resources){
var state_index = ++sate;
fetch('api.php').then(res=>{
if(state===sate_index){
渲染;
}else{
废弃删除
}
})
.catch(...);
};
两种锁的形式、各有优势、可以在不同的项目需求情况使用。