Для организации последовательной загрузки файлов с использованием sharp.js вы можете воспользоваться методом Promise.allSettled().
Пример кода:
```javascript
const sharp = require('sharp');
const fs = require('fs');
async function processImages(files) {
for (let i = 0; i < files.length; i++) {
try {
const file = files[i];
const imageBuffer = fs.readFileSync(file.path);
const processedImage = await sharp(imageBuffer)
.resize(200, 200)
.toBuffer();
fs.writeFileSync(`processed_${file.name}`, processedImage);
console.log(`Image ${file.name} processed and saved successfully`);
} catch (error) {
console.error(`Error processing image ${file.name}: ${error.message}`);
}
}
}
const files = [
{ path: 'image1.jpg', name: 'image1.jpg' },
{ path: 'image2.jpg', name: 'image2.jpg' },
// добавьте остальные файлы
];
processImages(files);
```
Этот код обработает и сохранит каждое изображение из массива `files` последовательно, а не параллельно. Вы можете добавить больше файлов в массив `files`, чтобы обработать больше изображений.
Прежде чем использовать этот код, убедитесь, что у вас установлены пакеты sharp и fs:
```
npm install sharp fs
```
Этот код также обрабатывает ошибки при обработке изображений. В случае ошибки для конкретного изображения, он продолжит обработку других изображений из массива.
Чтобы улучшить производительность, вы также можете добавить логику для обработки изображений асинхронно с использованием `for...of` цикла и `Promise.all()` для одновременной обработки нескольких изображений.