Пересматриваются ли переменные экспресс-маршрута каждый раз при получении нового запроса? - PullRequest
0 голосов
/ 28 апреля 2018

Допустим, у меня есть этот маршрут в моем приложении для экспресс-узлов, которое получает запросы от моего углового 5-го интерфейса. См. Запрос поста ниже, где я инициализирую 3 переменные с пустыми строками.

app.post('/rolecompare', function (req, res) {

var inputfilerolecompare1 = '';
var inputfilerolecompare2 = '';
var filenametowrite = '';

// с помощью промежуточного программного обеспечения multer Я получаю доступ к загруженным файлам и назначаю inputfilerolecompare1 и inputfilerolecompare2 с полным путем и именем входного файла для хранения файлов на моем сервере. После этого я использую эти переменные в методе app.post для импорта данных из файлов в mongodb и запускаю на них несколько скриптов python для записи выходного файла.

Вопрос: Пока это происходит, скажем, мой app.post получает еще один запрос и inputfilerolecompare1 = '', inputfilerolecompare2 = '', filenametowrite = '' снова инициализируются, как это влияет на первый запрос, который еще обрабатывается. Начнет ли первый запрос ссылаться на новые назначения?

Спасибо, что помогли мне лучше понять это.

1 Ответ

0 голосов
/ 29 апреля 2018

Каждый входящий запрос будет иметь свои собственные объекты request и response, и то, что вы изменяете в одном объекте запроса, не будет иметь ничего общего с другим запросом. Они совершенно разные в этом отношении.

Кроме того, переменные, объявленные локальными для обработчика запросов, такие как inputfilerolecompare1, также полностью отделены для каждого запроса. Каждый запрос является собственным вызовом функции, поэтому каждая функция получает свой новый набор локальных переменных, как и обычные вызовы функций.

Пока это происходит, скажем, мой app.post получает другой запрос и inputfilerolecompare1 = '', inputfilerolecompare2 = '', filenametowrite = '' снова инициализируется, как это влияет на первый запрос, который еще обрабатывается.

Эти переменные являются локальными переменными для одного конкретного запроса. Поскольку они объявлены как локальные переменные (локальные для функции-обработчика запроса), они являются отдельными переменными с отдельными значениями для каждого запроса. То, что вы установили для них в одном запросе, не имеет ничего общего с другим запросом.

Начнет ли первый запрос ссылаться на новые назначения?

Нет. Каждый запрос имеет свою копию этих переменных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...