reactjs - 在 redux-saga 中映射列表时使用延迟
问题描述
我正在使用 redux-saga 向服务器发送一堆请求。我有一个要发送到服务器的名称映射。但我想在发送每个名字之前等待 5 秒
function* sendAllNames() {
const nameData = ['foo','bar']
yield nameData
.map(function*(name) {
yield delay(5000);
yield fork(
sendNameRequest,
{
requestType: postRequest,
},
{
name,
},
);
});
}
问题是初始名称在发送前等待 5 秒,但在发送下一个名称时没有延迟。我可以对所有请求强制延迟 5 秒吗?
谢谢
解决方案
.map
不知道用生成器函数做任何特别的事情。Map 将使用数组的每个元素调用生成器,然后使用它获得的迭代器同步返回一个数组。
相反,我建议使用for ... in
循环:
function* sendAllNames() {
const nameData = ['foo','bar'];
for (const name in nameData) {
yield delay(5000);
yield fork(
sendNameRequest,
{ requestType: postRequest },
{ name },
);
}
}
推荐阅读
- google-sheets - 如何按类别统计条目?
- database - 使用 laravel 为不同的 API 制作单个端点
- reinforcement-learning - 更新 W 错过理解时的离策略蒙特卡罗方法
- reactjs - 我们选择了一个复选框,但是当我们取消表单时应该自动取消选中它......这在 react js 中怎么可能?
- python - 使用 Python 以 4 的间隔打印 0 到 999 之间的数字
- popupwindow - 如果我们单击 powerbuilder 中的按钮,如何弹出带有一些 I/O 字段的窗口
- python - 我们如何使用公式将工作表添加到 Excel 工作簿?
- java - 如何在 Apache POI 中设置条件格式规则的优先级?
- javascript - 在 HTML 中创建 Ludo 应用程序 || 无法在用户之间切换机会
- java - Spring Boot WebServiceTemplate 编码问题