我正在研究一个React项目,用户可以在其中上传和删除项目中的照片。上载新图像后,只有选择了相应的项目,该图像才对用户可见。该解决方案非常容易检查
if
(selectedProject.projectID=== imageMetadata.projectID)
其中
所有这些操作都是在 async 函数内部完成的,我们面临的问题是,即使在其他任何地方更改了 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;
}));
答案 0 :(得分:0)
这可能是一个关闭问题,其中上载处理程序不断缓存第一个函数。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures
也许编写一个函数,该函数将根据当前项目ID的参数返回一个promise数组。