Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 我需要通过一个数组在一个传奇故事中发送动作_Reactjs_Redux_React Redux - Fatal编程技术网

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