<!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变量的值。
请建议我做错了什么?
答案 0 :(得分:1)
这是因为您通过引入间隔使您的代码异步。在间隔仍在运行时,您的功能已经完成执行。你需要使用回调和/或承诺来解决这个问题。
你可以这样做,例如(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;
});