2017-01-09 3 views
0

Ich habe nodejs App, ich benutze Typoskript und Express-Server und Express-Sitzung.Express-Server res.json ("") nehmen Sie sich viel Zeit

Ich habe auch Routing-Funktion, die Anfrage vom Client und Antwort erhalten.

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'); 
}); 

Mein Problem ist, dass die Leitung

res.json(""); 

Somthing nehmen wie 5 Sekunden, das Delta zwischen der Zeit 'vor res.json' erscheinen und 'nach res.json' erscheinen plus minus ist 5 Sekunden.

Nun, wenn ich nicht Sitzung verwenden und die Funktion ist wie:

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'); 
}); 

kein Delta ist, ‚nach res.json‘ erscheinen unmittelbar nach dem ‚vor res.json‘.

Ich versuche res.end() hinzuzufügen, aber es ist nicht hilfreich.

Jemand kann helfen?

+0

Wie haben Sie die 5 Sekunden gemessen? –

+0

console.time ("res"); console.timeEnd ("res") – Lax

+0

Welche Version von Node verwenden Sie? Können Sie dies mit einer einfachen Express-App reproduzieren? – brandonscript

Antwort

1

Da Sie die Funktion async deklariert haben. Ihr Res-Objekt wartet, bis alle Prozesse in der Funktion beendet sind. Sie können entweder alle anderen Funktionen nach res.end(); Oder entfernen Sie den Async aus der Funktion

Verwandte Themen