如何使用debounce优化Jira项目中的笔记请求速度?
- 内容介绍
- 文章标签
- 相关推荐
本文共计247个文字,预计阅读时间需要1分钟。
javascript/** * 创建一个防抖函数 * @param {Function} func - 要执行的函数 * @param {number} delay - 延迟时间(毫秒) * @returns {Function} 返回一个防抖后的函数 */const debounce=(func, delay)=> { let timeout; return (...params)=> { if (timeout) clearTimeout(timeout); timeout=setTimeout(()=> func(...params), delay); };};
/** * 使用防抖函数的示例 */const log=debounce(()=> console.log('con'), 1000);
// const debounce = (func, delay) => {// let timeout;
// return (...param) => {
// if (timeout) {
// clearTimeout(timeout);
// }
// timeout = setTimeout(function() {
// func(...param);
// }, delay);
// }
// }
// const log = debounce(() => console.log('call'), 5000)
// log()
// log()
// log()
// ...5s
// 执行!
// debounce 原理讲解:
// 0s ---------> 1s ---------> 2s --------> ...
// 一定要理解:这三个函数都是同步操作,所以它们都是在 0~1s 这个时间段内瞬间完成的;
// log()#1 // timeout#1
// log()#2 // 发现 timeout#1!取消之,然后设置timeout#2
// log()#3 // 发现 timeout#2! 取消之,然后设置timeout#3
// // 所以,log()#3 结束后,就只剩timeout#3在独自等待了
本文共计247个文字,预计阅读时间需要1分钟。
javascript/** * 创建一个防抖函数 * @param {Function} func - 要执行的函数 * @param {number} delay - 延迟时间(毫秒) * @returns {Function} 返回一个防抖后的函数 */const debounce=(func, delay)=> { let timeout; return (...params)=> { if (timeout) clearTimeout(timeout); timeout=setTimeout(()=> func(...params), delay); };};
/** * 使用防抖函数的示例 */const log=debounce(()=> console.log('con'), 1000);
// const debounce = (func, delay) => {// let timeout;
// return (...param) => {
// if (timeout) {
// clearTimeout(timeout);
// }
// timeout = setTimeout(function() {
// func(...param);
// }, delay);
// }
// }
// const log = debounce(() => console.log('call'), 5000)
// log()
// log()
// log()
// ...5s
// 执行!
// debounce 原理讲解:
// 0s ---------> 1s ---------> 2s --------> ...
// 一定要理解:这三个函数都是同步操作,所以它们都是在 0~1s 这个时间段内瞬间完成的;
// log()#1 // timeout#1
// log()#2 // 发现 timeout#1!取消之,然后设置timeout#2
// log()#3 // 发现 timeout#2! 取消之,然后设置timeout#3
// // 所以,log()#3 结束后,就只剩timeout#3在独自等待了

