Экспресс-сессия (request.session
) читается из хранилища (в вашем случае redis store) в момент выполнения запроса.
Если запрос выполняет задачу и затем изменение сеанса и сохранение его обратно в хранилище фактически сохранит уже чтение сеанс, обогащенный обновленными свойствами.
Что можно сделать, чтобы смягчить это, это перезагрузить сеанс доsave:
app.get( "/op2", function( req, res, next ) {
someReallyLongAsyncTask( function() {
req.session.reload(function(err) {
if ( !req.session.op2Call ) { req.session.op2Call = 0; }
req.session.op2Call++;
req.session.save( function() {
res.json( { success: true } )
} );
} );
} );
} );
Таким образом, вы убедитесь, что сессия перечитывается перед сохранением.