асинхронные функции уже возвращают обещания, вам не нужно переносить код в новый.Просто верните значение из функции, и вызывающая сторона получит обещание, которое преобразуется в возвращаемое значение.
Кроме того, вы сделали асинхронную функцию, но фактически нигде не используете await
.Таким образом, цикл for проходит весь цикл до разрешения любого из ваших обещаний.Вот почему ни одна из данных не попадает в ваш объект.
Это действительно упростит ваш код, чтобы использовать только await
и избавиться от вызовов then()
.Например, вы можете сделать это:
async function createFormConfig(files: string[]): Promise<object> {
const retConfig: any = {};
for (const file of files) {
if (file.match(matchFilesForFormConfigMap.get('FIELD')){
// no need for the then here
let parsedData = await parseCsv(file)
retConfig.field = parsedData.data
}
// ...etc
В конце вы можете просто вернуть значение:
return retConfig