在写项目的时候,使用Vue与下拉框进行双向绑定时,发现没有办法获取到数据,然后看了控制台的报错信息,发现是接口实现类出错,然后去查错,但是不知道是哪里出现了问题,请问这种错误是因为什么?
报错截完整啊,但是粗看了一下应该是sql diver没有找到的原因
【相关推荐】
点击查看详情 。
- 定时器版节流的写法不需要判断 timer 存在的情况清除定时器。
- 为什么?这是因为就算你清除了定时器,定时器的返回值还是有值,而且 clearTimeout 的作用是什么?是清除setTimeout 里面的代码块,
----------------------------------------错误分割线-------------------------------------------
以下是(反面示例)错误定时器版节流代码,注意注意,不要使用这个!!!
function throttle(func, waitTime) {
let timer;
return function() {
let that = this;
let args = arguments;
// 如果你在这一步判断了当定时器返回值timer存在,然后你使用clearTimeout 清掉的话,
// 意味着,这两行代码不会执行,
// timer = null;
// func.apply(that, args)
// 且 timer 仍然有值,那么在这个timer 有值的情况下,
// if (!timer) 这个判断分支就永远都不会进入,也就代表着永远不会执行需要节流的函数了。
// 初次不会执行,第二次调用的时候执行了,并清除了上次定时器里面的代码块,
// timer 没有重新赋值,
// 所以这个timer 是一直有值的,那么这个 if (!timer) 判断分支就不会进入了。
if(timer) clearTimeout(timer);
if (!timer) {
timer = setTimeout(() => {
timer = null;
func.apply(that, args) // 执行需要节流的函数
}, waitTime)
}
}
}
以上是(反面示例)错误定时器版节流代码,注意注意,不要使用这个!!!
----------------------------------------错误分割线-------------------------------------------
调用方法:
document.getElementById("submitBtn").onclick = throttle(handleSubmit, 3000);
效果如下: