Добавить обещания в массив. Каждое обещание должно соответствовать значению, которое вы вводите в content
Когда все обещания разрешатся, возвращаемое значение будет массивом, ранее известным как content
.
Кроме того, вы можете и должны использовать все асинхронные fs
вызовы. Так что readFileSync
можно заменить на readFile
(асинхронно). Однако я не заменил ваш код этим асинхронным вызовом, чтобы вы могли четко видеть, что требовалось для ответа на исходный вопрос.
Не уверен, правильно ли я разместил фрагмент кода.
const Epub = require("epub-gen")
const folder = './files/'
const fs = require('fs')
let promises = []
fs.readdir(folder, (err, files) => {
files.forEach(filename => {
promises.push(new Promise((resolve, reject) => {
const title = filename.split('.').slice(0, -1).join('.')
const data = fs.readFile(`${folder}${filename}`).toString('utf-8')
resolve({
title,
data
})
}))
})
})
const option = {
title: "Alice's Adventures in Wonderland", // *Required, title of the book.
content
}
new Epub(option, "./text.epub")
Promise.all(promises).then((content) => {
//done
})