2017-01-09 11 views
0

У меня есть приложение nodejs, я использую машинописный и экспресс-сервер и экспресс-сессию.Экспресс-сервер res.json ("") занимает много времени

У меня есть функция маршрутизации, которая получает запрос от клиента и ответ.

private async changeVis(req: express.Request, res: express.Response) { 
    Let mySession=._deepClone(req.session['blah']); 
    MyModule.changeViz(mySession).then(function(myRes){ 
    req.session["blah"] = myRes; 

    console.log('before res.json');   
    res.json(""); 
    console.log('after res.json'); 
}); 

Моя проблема в том, что линии

res.json(""); 

принимать Somthing как 5 секунд, дельту между временем «до res.json» появляются и «после res.json» появится плюс минус 5 секунд.

Теперь, когда я не использует сессию и функция как:

private async changeVis(req: express.Request, res: express.Response) { 
    MyModule.changeViz().then(function(){; 
    console.log('before res.json');   
    res.json(""); 
    console.log('after res.json'); 
}); 

нет дельты «после res.json» появляется сразу после того, как «до res.json».

Я пытаюсь добавить res.end(), но это не поможет.

Кому-то может помочь?

+0

Как вы измерили 5 секунд? –

+0

console.time («res»); console.timeEnd («res») – Lax

+0

Какая версия узла вы используете? Можете ли вы воспроизвести это с помощью приложения «Голые кости»? – brandonscript

ответ

1

Потому что вы объявили функцию асинхронной. ваш объект res будет ждать завершения всех процессов в функции. Вы можете выполнить все остальные функции после res.end(); Или удалите асинхронный вызов из функции

 Смежные вопросы

  • Нет связанных вопросов^_^