【发布时间】:2019-12-15 11:41:55
【问题描述】:
我有一个组件,在它内部我正在与 API 通信(这里我设置了超时来代替模拟)。我在 for 循环中进行了一些调用,以更新当前交互索引上的数组。最后我想 console.log 所有带有添加数据的数组。这就是问题所在。循环正在经历所有迭代,并且不会等待完成异步任务,因此它正在打印带有注释的空数组,说明有数据但刚刚到来。
我尝试添加 useState 但没有解决问题。
import React, {useEffect} from 'react';
function Ingredients() {
const heatingStepsTime = [];
const heatingStepsTimer = [];
function getTimes(i, type) {
if (type === "time") {
setTimeout(() => {
heatingStepsTime[i] = i;
}, 1000);
} else {
setTimeout(() => {
heatingStepsTimer[i] = i + 1;
}, 1000)
}
}
const getProcess = () => {
for (let i = 0; i < 3; i++) {
getTimes(i, "time");
getTimes(i, "timer");
}
};
useEffect(getProcess, []);
console.log(heatingStepsTime);
console.log(heatingStepsTimer);
return (
<div className="App">
test
</div>
);
}
export default Ingredients;
有没有办法在 React 中停止 for 循环迭代,以便在异步任务完成时继续循环?
【问题讨论】:
-
@giorgimoniava 但是如何在 for 循环中使用它?
-
你在使用promise吗?还是异步/等待?
标签: javascript reactjs react-hooks