Heim > Artikel > Web-Frontend > Erstellen Sie ganz einfach einen NodeJS-Server (9): Implementieren Sie nicht blockierende Operations_node.js
Wir möchten das Antwortobjekt (erhalten von der Rückruffunktion onRequest() des Servers) über die Anforderungsroute an den Anforderungshandler übergeben. Der Handler kann dann auf die Anfrage antworten, indem er Funktionen für dieses Objekt verwendet.
Nehmen wir zunächst Änderungen an server.js vor:
Wir übergeben das Antwortobjekt als dritten Parameter an die Route()-Funktion und entfernen alle antwortbezogenen Funktionsaufrufe im onRequest()-Handler, da wir möchten, dass dieser Teil der Arbeit von der Route( )-Funktion zum Abschließen.
Als nächstes ändern Sie router.js:
Gleiches Muster: Anstatt den Rückgabewert vom Anforderungshandler abzurufen, wird das Antwortobjekt dieses Mal direkt übergeben. Wenn kein entsprechender Anforderungsprozessor zur Verarbeitung vorhanden ist, geben wir direkt einen Fehler „404“ zurück.
Als nächstes ändern Sie requestHandler.js:
Unsere Handlerfunktion muss den Antwortparameter empfangen, um direkt auf die Anfrage antworten zu können. Der Start-Handler führt die Anfrage-Antwort-Operation in der anonymen Rückruffunktion von exec() aus, während der Upload-Handler immer noch einfach „Hallo Welt“ antwortet, dieses Mal jedoch das Antwortobjekt verwendet.
Wenn Sie nachweisen möchten, dass die zeitaufwändigen Vorgänge im /start-Handler die unmittelbare Antwort auf die /upload-Anfrage nicht blockieren, können Sie requestHandlers.js in die folgende Form ändern:
Auf diese Weise dauert das Laden bei der Anfrage von http://localhost:8888/start 10 Sekunden, bei der Anfrage von http://localhost:8888/upload antwortet es jedoch sofort, auch wenn /start Die Antwort wird derzeit noch bearbeitet.