我需要通过遍历数组来调度传奇中的动作

时间:2020-08-11 16:17:50

标签: reactjs redux react-redux

我要实现的是循环遍历并以一个间隔(setTimeout)进行排列并按顺序分派动作。 下面是我的代码:

        yield responses.forEach(response => {
            setTimeout(()=>{
                console.log(response);
                put(addResponseToConversation(response));
            }, 200)
        });   

不幸的是,它无法正常工作。我想念的是什么?

1 个答案:

答案 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