如何在获取中更新变量

How to update variable in fetch

const test = () => {
let shown = { total: 0, thisWeek: 0, thisWeekData: [0, 0, 0, 0, 0, 0, 0] }

modalIds.map(async (data) => {
  await fetch("api/statistics/private/get?modalId=" + data.modalId)
    .then((response) => response.json())
    .then((data) => {
      if (data.success) {
        shown = DataForAllShown(shown, data, "views")


      }
    })
})
return shown
}

shown的值始终与初始值相同,但函数DataForAllShown()赋予了它一个新值。稍后尝试访问该变量时,它保持不变。

我知道 fetch 总是异步的,但是我如何在 fetch 之外更新变量并在 fetch 之后立即访问它?

我注意到,您 return 在承诺之外显示。同样使用 Promise.all() 对地图对象更有意义。

尝试修改如下代码:

const test = async () => {
    let shown = { total: 0, thisWeek: 0, thisWeekData: [0, 0, 0, 0, 0, 0, 0] }

    await Promise.all(modalIds.map(async (data) => {
        let response = await fetch("api/statistics/private/get?modalId=" + data.modalId);
        let jsonData = await response.json();
        if (jsonData.success) {
            shown= DataForAllShown(shown, jsonData, "views");
        }
    }));
    
    return shown;

}