※自分で試してみた感じでは良さそうだったのですが、おかしい部分があるかもしれません、その時は教えていただければありがたいです。
追記
throttle修正しました、間違えていたら教えてくだい。
function debounce(callback, wait) {
let lastRunTimestamp;
return async () => {
lastRunTimestamp = Date.now();
await new Promise(resolve => setTimeout(resolve, wait));
if (Date.now() - lastRunTimestamp >= wait) {
callback();
}
};
}
function throttle(callback, wait) {
let firstCallFlg = true;
let runFlg = false;
return async () => {
runFlg = true;
if (firstCallFlg) firstCallFlg = false;
else return;
do {
callback();
runFlg = false;
await new Promise(resolve => setTimeout(resolve, wait));
} while (runFlg);
firstCallFlg = true;
};
}
See the Pen MWwooyj by 奥村健吾 (@okumurakengo) on CodePen.