создать массив обещаний для Promise.all - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть массив путей к файлам, и я хочу прочитать все файлы в Promise.all, а затем выполнить некоторые задачи.

var files = ["./file1.txt", "./file2.txt"]

Promise.all(files.forEach(file=>{ /* read file content */}))

1 Ответ

3 голосов
/ 05 февраля 2020

Вы хотите использовать Array.map:

var files = ["./file1.txt", "./file2.txt"]

Promise.all(files.map(async file=>{ /* read file content */}))

Если вы не хотите, чтобы это была асинхронная c функция, но хотите, чтобы она возвращала обещание, это тоже хорошо

var files = ["./file1.txt", "./file2.txt"]

Promise.all(files.map(file=>{ /* read file content, return a promise */}))

[править] вот пример, использующий мой предпочтительный файловый интерфейс, fse - это просто fs, но с обещаниями:

var files = ["./file1.txt", "./file2.txt"]

Promise.all(files.map(file=>{ 
    return fse.readFile(file, 'utf-8');
})).then(results => {
    // results is an array of strings of the contents of each file
})

https://www.npmjs.com/package/fs-extra

...