作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
<!DOCTYPE html>
<html>
<body>
<script>
function sampleDelay(delay) {
return function(functionArray) {
var count = 0;
var func = setInterval(function(){
if(count === functionArray.length){
clearInterval(func);
}
count++;
console.log(functionArray[count-1]);
return functionArray[count-1];
}, delay);
};
}
var DelayedValue = sampleDelay(1000)([
1,2,3,4,5
]);
</script>
</body>
</html>
我想在延迟一秒后将 DelayedValue varibale 的值变为 1,2,3,4,5。此代码不返回 DelayedValue 变量的值。
请指出我做错了什么?
最佳答案
这是因为您通过引入间隔使代码异步。当间隔仍在运行时,您的函数已经完成执行。您需要使用回调和/或 promise 来解决此问题。
您可以这样做,例如( fiddle ):
function delayedOutput(values, delay, callback){
var step = 0,
interval = setInterval(function(){
callback(values[step++]);
if(step === values.length){
clearInterval(interval);
}
}, delay);
}
delayedOutput([1,2,3,4,5], 1000, function(i){
document.getElementById('output').innerHTML += i;
});
关于Javascript 闭包和 setTImeInterval 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19809508/
function sampleDelay(delay) { return function(functionArray) { var count = 0; var func
我在暂停图像时遇到了一点困难,因此它被渲染了。我将图像存储在数组的偶数索引中(例如:2、4、6)。使用 for 循环,我想每 2 秒更改一次图像。在加载 HTML 页面时,我在 HTML 中调用 on
我有一个 setinterval 可以将推土机从右移到左。 在下面的 jsfiddle 中,setInterval 必须在 5 秒后自行停止。 (为此使用了 settimeout 和 clearint
这个问题在这里已经有了答案: How to enable DDoS protection? (10 个答案) 关闭 9 年前。 我只是在想....如果我有一个 ajax 调用,它调用一个从 MySQ
我是一名优秀的程序员,十分优秀!