Я надеюсь, что этот вопрос не слишком общий, но у меня есть запрос на публикацию, который загружает изображение в высоком разрешении, а затем на стороне сервера выполняется несколько операций с этим изображением для создания миниатюр и водяных знаков. Серверу требуется 10-20 секунд, прежде чем он, наконец, вернет ответ. Должен ли я вернуть какой-то промежуточный ответ? Есть ли здесь лучшая практика?
Для иллюстрации приведем примерную схему кода на стороне клиента:
axios.post('/upload', hugePhoto, { headers: { 'Content-Type': 'multipart/form-data' } })
.then(res => { /* takes 10-20 seconds before I get a response here */ })
.catch(err => { /* handle error */ })
И код на стороне сервера, обратите внимание, что я создаю здесь куча изображений разных размеров и загрузка их на S3, что занимает так много времени:
router.post('/upload', upload.single('file'), (req, res) => {
sharp(req.file.path).metadata()
.then(m => /* reading metadata */)
.then(() => /* some db operations */)
.then(() => /* uploading original file to S3 */)
.then(() => /* resizing the file with sharp */)
.then(() => /* uploading that to S3 */)
.then(() => /* resizing the file with sharp */)
.then(() => /* uploading that to S3 */)
.then(() => /* resizing the file with sharp */)
.then(() => /* uploading that to S3 */)
.then(() => res.json({ success: true }))
.catch(err => res.status(400).send(err.message))
})
Спасибо!