我要实现的是循环遍历并以一个间隔(setTimeout
)进行排列并按顺序分派动作。
下面是我的代码:
yield responses.forEach(response => {
setTimeout(()=>{
console.log(response);
put(addResponseToConversation(response));
}, 200)
});
不幸的是,它无法正常工作。我想念的是什么?
答案 0 :(得分:1)
// without division
function methodOne(arr) {
return arr.map(item => {
return arr.reduce((result, num) => {
if (num !== item) {
result = result * num;
}
return result;
},1)
});
}
// with division
function methodTwo(arr) {
var mul = arr.reduce((result, num) => {
result = result * num;
return result;
},1)
return arr.map(item => mul/item);
}
console.log(methodOne([1, 2, 3, 4, 5]));
console.log(methodTwo([1, 2, 3, 4, 5]));
不会等待一个计时器到期并在设置新计时器之前调度操作。它将仅遍历数组并设置多个计时器。
您需要的是一种在分派另一个动作之前等待一个动作被分派的方法。为此,您可以创建一个函数,将其命名为“ sleep”,该函数将返回.forEach()
,该函数在特定的时间量后即可实现。使用Promise
循环,您可以分派一个动作,然后等待“ {sleep}”函数中的for of
解析后再分派另一个动作。
“睡眠”功能应如下所示:
Promise
在您的传奇故事中,使用function sleep(seconds) {
return new Promise((resolve, reject) => {
setTimeout(resolve, seconds * 1000);
});
}
循环遍历数组,调度一个动作,然后调用for of
函数在每个动作之间添加延迟。
sleep