У меня есть этот код:
app.post('/pst', function(req, res) {
var url = req.body.convo;
myAsyncFucntion(url).then(result => {
console.log('TAKE A LOOK AT THIS!');
//transforming array to string to pass to Buffer.from()
//then we remove ',' with newlines, so each index of array is a new line
var str = result.toString();
result = str.split(',').join('\r\n');
//clever way to send text file to client from the memory of the server
var fileContents = Buffer.from(result, 'ascii');
var readStream = new stream.PassThrough();
readStream.end(fileContents);
res.set('Content-disposition', 'attachment; filename=' + fileName);
res.set('Content-Type', 'text/plain');
readStream.pipe(res);
//garbage collecting. i don't know if it's neccessary
result = '';
str = '';
}).catch(err => {
console.log(err);
res.render('error.ejs');
})
});
Этот код запускает асинхронную функцию и предоставляет пользователю некоторые данные из памяти в виде текстового файла.Я планирую использовать сокеты и уведомить клиента о том, что работа выполнена.Клиент введет ссылку и загрузит файл.
Поэтому я планирую взять результат локальной переменной и экспортировать его в глобальную переменную.Таким образом, app.get()
будет иметь доступ к нему, и когда пользователь перейдет по этой ссылке, он будет обслуживать файл.
Но пользователь сказал мне, что глобальные переменные совместно используются экземплярами.
Это правда?Таким образом, если два (или более) пользователя попытаются получить свои результаты одновременно, глобальные переменные будут одинаковыми
для них обоих?