Расчет размера папки является асинхронным процессом, посылы и обратные вызовы используются при выполнении асинхронных процессов.
В этом случае я использую обещания, чтобы получить размер папки после окончания расчета.
Если вы не знаете, как работают обещания, я оставлю эту ссылку, чтобы вы могли
читать и понимать.
Обещания .
Функция getSize()
- это та, которая использует обещания, вычисление выполняется асинхронно, а по окончании возвращает значение (resolve
) или ошибку (reject
).
function getSize() {
return new Promise((resolve, reject) => {
require('get-folder-size')('videos', (err, size) => {
if (err) return reject(err);
resolve({
sizeBytes: size + ' bytes',
sizeMB: (size / 1024 / 1024).toFixed(2) + ' MB',
});
});
});
}
Здесь мы получаем значение обещания, чтобы получить данные, которые необходимо сделать таким образом, это называется разрешение обещания .
app.get('/test', (req, res) => {
//res.sendFile(__dirname +'/views/test.html',);
getSize().then((data) => {
const { sizeMB } = data;
res.json({ title: 'zaffar', message: 'abbas', size: sizeMB });
});
});
Здесь у вас есть все изменения, примененные к вашему коду:
const express = require('express');
const app = express();
// This serves static files from the specified directory
app.use(express.static(__dirname));
function getSize() {
return new Promise((resolve, reject) => {
require('get-folder-size')('videos', (err, size) => {
if (err) return reject(err);
resolve({
sizeBytes: size + ' bytes',
sizeMB: (size / 1024 / 1024).toFixed(2) + ' MB',
});
});
});
}
app.get('/test', (req, res) => {
//res.sendFile(__dirname +'/views/test.html',);
getSize().then((data) => {
const { sizeMB } = data;
res.json({ title: 'zaffar', message: 'abbas', size: sizeMB });
});
});
const server = app.listen(3001, () => {
const host = server.address().address;
const port = server.address().port;
console.log('App listening at https://%s:%s', host, port);
});