我有一个JavaScript功能,可以在屏幕上打印数字。此功能打印了很多数字,但我使用的屏幕与Alan Turing一样长,因此无法快速打印数字!
解决方案? Throtlle / debounce /使用underscorejs
或lodash
延迟打印。
我的第一个尝试是使用SelectList
。
ModelState
throttle
但是它不是以1000毫秒的间隔打印所有数字,而是每隔1000毫秒调用一次该函数,这导致它实际上只执行两次。
我的下一次尝试是使用let fun = num => {
console.log(num);
};
let throttleFun = _.throttle(fun, 1000);
for (let i = 0; i < 10; i++) {
throttleFun(i);
}
:
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
debounce
现在,再次,debounce实际上延迟了我的函数的执行,因为它上次执行1000ms,而不是打印1000ms的分离值,这导致它只执行一次。
我之前提到的所有行为都记录在案,并且它们对于下划线和lodash都是相同的。
我的问题是:
请注意,虽然在这种情况下,参数恰好是数字,但实际上它们可以是字符串,对象或任何其他没有任何共同关系的东西。
答案 0 :(得分:2)
您可以使用本机setInterval函数执行此操作:
let fun = num => {
console.log(num);
};
let max = 10, i = 0;
let timer = setInterval(() => {
fun(i);
i++;
if (i === max) {
clearInterval(timer);
}
}, 1000);
如果你想使用下划线/ lodash,你可以这样做:
let fun = num => {
console.log(num);
};
for (let i = 0; i < 10; i++) {
_.delay(fun, 1000 * (i + 1), i);
}