Ist es möglich, eine Middleware zu schreiben, die ausgeführt wird, nachdem die Antwort an einen Client gesendet wurde oder nachdem die Anforderung verarbeitet und aufgerufen wurde, bevor die Antwort an den Client gesendet wurde?Express/connect Middleware, die ausgeführt wird, nachdem die Antwort an den Client gesendet wurde
8
A
Antwort
13
pauljz gab die grundlegende Methode, aber auf der hier zu erweitern ist ein Beispiel für Middleware
module.exports = function() {
return function(req, res, next) {
req.on("end", function() {
// some code to be executed after another middleware
// does some stuff
});
next(); // move onto next middleware
}
}
In Ihrem Haupt App
expressApp.use(require("./doneMiddleware"));
expressApp.use(express.logger());
expressApp.use(express.static.....
3
Prüfen Sie, ob die Bindung an req.on('end', function() {...});
für Sie funktioniert.
+0
Wenn ich richtig verstehe, löst dieses Ereignis, wenn der Client abgeschlossen Senden der Anfrage/Daten an den Server. Aber was ich will, ist nach dem Aufruf von response.render oder response.redirect etc, sollte die Middleware ausgeführt werden. –
Wenn ich das richtig verstehe, wird dieses Ereignis ausgelöst, wenn der Client das Senden der Anfrage/Daten an den Server abgeschlossen hat. Aber was ich will, ist nach dem Aufruf von response.render oder response.redirect etc, sollte die Middleware ausgeführt werden. –
Nein, dieses Ereignis wird ausgegeben, sobald die gesamte Anforderung abgeschlossen ist, einschließlich des Sendens der Antwort. Solange rendern/Redirect Call Response.end die verknüpfte Anfrage wird Ende senden. –
@SelvarajMA Der folgende Ansatz kann besser sein: http://StackOverflow.com/a/21858212/673014. – pronskiy