[英]async function has old state React-Redux
我正在開發一個 React 項目,用戶可以在其中上傳和刪除項目中的照片。 上傳新圖像后,只有選擇了相應的項目,用戶才能看到它。 解決方案很容易檢查
if
(selectedProject.projectID=== imageMetadata.projectID)
在哪里
所有這些都是在一個異步函數中完成的,我們面臨的問題是,即使在其他地方更改了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 一直緩存第一個函數。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures
也許編寫一個函數,該函數將根據當前項目 ID 的參數返回一個承諾所有數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.