Reactjs 我需要通过一个数组在一个传奇故事中发送动作
我想要实现的是以间隔(Reactjs 我需要通过一个数组在一个传奇故事中发送动作,reactjs,redux,react-redux,Reactjs,Redux,React Redux,我想要实现的是以间隔(setTimeout)循环和数组,并按顺序分派操作。 下面是我的代码: yield responses.forEach(response => { setTimeout(()=>{ console.log(response); put(addResponseToConversation(response)); }, 200)
setTimeout
)循环和数组,并按顺序分派操作。
下面是我的代码:
yield responses.forEach(response => {
setTimeout(()=>{
console.log(response);
put(addResponseToConversation(response));
}, 200)
});
不幸的是,它不起作用。我缺少的是什么?。forEach()
不会等待一个计时器过期并在设置新计时器之前发送操作。它将在数组上迭代并设置多个计时器
您需要的是一种在发送另一个操作之前等待发送一个操作的方法。为此,您可以创建一个函数,将其命名为“sleep”,该函数返回一个承诺
,该承诺在特定的时间段后实现。使用for of
循环,您可以调度一个操作,然后等待“sleep”函数中的Promise
解析,然后再调度另一个操作
“睡眠”功能应如下所示:
function sleep(seconds) {
return new Promise((resolve, reject) => {
setTimeout(resolve, seconds * 1000);
});
}
在您的传奇中,使用for of
循环迭代数组,分派一个操作,然后调用sleep
函数在每个操作之间添加延迟
for (let res of responses) {
yield put(addResponseToConversation(res));
yield call(sleep, 0.2);
}
产量也要放在前面。谢谢大副!现在我明白了,我必须从
forEach
切换到经典的,用于。。。属于…
。我想我对ES6太着迷了!”D