Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.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 Redux_Javascript_Reactjs_Async Await_React Redux - Fatal编程技术网

Javascript 异步函数具有旧状态React Redux

Javascript 异步函数具有旧状态React Redux,javascript,reactjs,async-await,react-redux,Javascript,Reactjs,Async Await,React Redux,我正在做一个React项目,用户可以上传和删除项目中的照片。上传新图像后,只有选择了相应的项目,用户才能看到它。这个解决方案很容易检查 if (selectedProject.projectID=== imageMetadata.projectID) 在哪里 selectedProject.projectID:当前所选项目的Id(提交自 Redux商店) imageMetadata.projectID:上载图像所属项目的Id 所有这些都是在一个异步函数中完成的,我们面临的问题是,即使在s

我正在做一个React项目,用户可以上传和删除项目中的照片。上传新图像后,只有选择了相应的项目,用户才能看到它。这个解决方案很容易检查

if 
(selectedProject.projectID=== imageMetadata.projectID)
在哪里

  • selectedProject.projectID:当前所选项目的Id(提交自 Redux商店)
  • imageMetadata.projectID:上载图像所属项目的Id
所有这些都是在一个异步函数中完成的,我们面临的问题是,即使在selectedAlbum.albumID在其他任何地方都发生了更改,这个函数仍然有它原来的值。是因为函数是异步的吗

这是我的代码:

 let projectId = selectedProject.projectID;
 const responses = await Promise.all(
   filesToUpload.map( async (file) => {
     let res = await imageStoreApiHandler.uploadPhoto(file, projectId);
     notifyUploadProgress(count++, total, notifcationKey);
     if (res.status === 200) {
       let imageMetadata: any = res.data[0];
       if (selectedProject.projectID === imageMetadata.projectID) {
         addImage(imageMetadata);
       }
     }
     return res;
   }));

uploadhandler保持缓存第一个函数可能是一个闭包问题


可以编写一个函数,该函数将根据当前项目id的参数返回一个promise all数组。

您是否在操作中执行此操作?在onClick事件中执行此操作,您所说的操作是什么意思?redux操作:)。可能需要更多的代码来解决上面编辑和粘贴的完整函数的问题。是什么导致了这个问题?你能就如何解决这个问题提供一些指导吗?