Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.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
Javascript React setState:多个回调是否同步?_Javascript_Reactjs_Synchronization_Concurrentmodification - Fatal编程技术网

Javascript React setState:多个回调是否同步?

Javascript React setState:多个回调是否同步?,javascript,reactjs,synchronization,concurrentmodification,Javascript,Reactjs,Synchronization,Concurrentmodification,假设有这样一种情况: 在状态中,有一个列表,对应于UI上一个表中的多行。有多个api调用,每个项(行)一个api调用,它将检索最新状态,并更新列表中的一个项 在这种情况下,我可以理解回调方法比直接调用setState要好。但是,我仍然不知道回调的多个调用是否会同步。 例如,是否会发生以下情况 回调1读取列表 回调2读取列表 回调1更新列表(0) 回调2更新列表(1) 回调1回写 回调2回写 在这种情况下,1的更新可能会丢失,这是典型的读-修改-写操作。我仍然不清楚您的问题,如果您能提供一些代码,

假设有这样一种情况: 在状态中,有一个列表,对应于UI上一个表中的多行。有多个api调用,每个项(行)一个api调用,它将检索最新状态,并更新列表中的一个项

在这种情况下,我可以理解回调方法比直接调用setState要好。但是,我仍然不知道回调的多个调用是否会同步。 例如,是否会发生以下情况

  • 回调1读取列表
  • 回调2读取列表
  • 回调1更新列表(0)
  • 回调2更新列表(1)
  • 回调1回写
  • 回调2回写

  • 在这种情况下,1的更新可能会丢失,这是典型的读-修改-写操作。

    我仍然不清楚您的问题,如果您能提供一些代码,可能会更好

    但是,如果您打算多次调用一个fetch函数,并在它到达后设置状态,那么您应该安全地假设setState不应该覆盖另一个,无论您的调用是异步还是同步完成的


    但是在任何情况下,作为前端,您都不应该一次发送这么多请求,您应该从服务器请求所有数据

    您可以在前一个状态下查看谢谢,我必须更新每个数据,因为它是第三方服务。问题是,我正在更新嵌套在列表中的一个项目,但当我设置状态时,它正在设置整个列表。因此,上面的更新2可能不知道更新1已经发生,并且将覆盖更新1刚刚执行的值。