Javascript 如何多次调用函数而不在第一次执行时中断

Javascript 如何多次调用函数而不在第一次执行时中断,javascript,reactjs,angularjs,react-native,Javascript,Reactjs,Angularjs,React Native,我有一个函数,可以将子任务的状态更改为true-false。单击主任务时,其子任务状态应变为true。当我在循环中运行这个函数时,它会在第一次迭代后中断。如何更改状态为false的每个子任务的状态 我的职能是 const changeSubtaskStatus = id => { axios.patch(`/subtaskStatus/${id}`) .then(res=>{ setSubTodos([...subTodos].map(ST

我有一个函数,可以将子任务的状态更改为true-false。单击主任务时,其子任务状态应变为true。当我在循环中运行这个函数时,它会在第一次迭代后中断。如何更改状态为false的每个子任务的状态

我的职能是

const changeSubtaskStatus = id => {
       axios.patch(`/subtaskStatus/${id}`)
        .then(res=>{
       setSubTodos([...subTodos].map(ST=>{
                if(ST.id===id){
                     return{
                         ...ST,
                         status: !ST.status
                     }
                }else{
                    return ST;
                }
           }));
        }).catch(err=>console.log(err.message))
   }
我的听众在这里

const onTaskCheck = id => e =>{
       changeTaskStatus(id);
        const subTasks = subTodos.filter(ST=>ST.taskId===id);
       subTasks.map(ST=>{
           if(ST.status===false){
               changeSubtaskStatus(ST.id);
           }
       }) 
   }

changeSubtaskStatus用于子任务数组的第一个对象并中断。请让我知道我的错误。提前感谢

当您将多个状态更新排入这样的循环中时,您应该真正使用功能状态更新,以便每次更新都使用以前的状态,而不是创建回调的渲染周期中的状态。问题在于调用回调的呈现周期中的状态的javascript封装

const changeSubtaskStatus = (id) => {
  axios
    .patch(`/subtaskStatus/${id}`)
    .then((res) => {
      setSubTodos((subTodos) =>    // <-- previous state
        subTodos.map((ST) =>       // <-- shallow copy array
          ST.id === id
            ? {
                ...ST,             // <-- shallow copy ST object
                status: !ST.status // <-- update property
              }
            : ST
        )
      );
    })
    .catch((err) => console.log(err.message));
};
constchangesubtaskstatus=(id)=>{
axios
.patch(`/subtaskStatus/${id}`)
。然后((res)=>{
setSubTodos((subTodos)=>///