异步/等待循环 array.push 问题

问题描述

我目前正在处理一些需要获取异步数据并将其推送到数组的工作。请参阅下文。

const getStudent = async (id: string) => {
  const student = await fetchSomeData(id); 
  const markedEssayArray: string[] = [];
  
  for await(const essayName of student.essay) {
    const markedEssay = await fetchMarkedEssay(essayName);

    markedEssayArray.push(markedEssay)
  };
 
  student.essay = markedEssayArray;

  return student;
};

所以基本上,我获取一个学生,并用标记的版本更新 student.essay 数组。但是,当我测试代码时, student.essay 数组返回一个空数组 []。

谁能告诉我哪里出错了?

解决方法

你可以这样试试:

const getStudent = async (id: string) => {
  const student = await fetchSomeData(id); 
  let markedEssayArray: string[] = [];
  const essayArr = student.essay;

  essayArr.forEach((singleEssay) => {
    let markedEssay = await fetchMarkedEssay(essayName);

    markedEssayArray.push(markedEssay)
  }
   
  student.essay = [...markedEssayArray];

  return student;
};

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...