Heim > Web-Frontend > js-Tutorial > Hauptteil

EDD mit Ereignisemittern

DDD
Freigeben: 2024-10-25 05:42:29
Original
232 Leute haben es durchsucht

EDD with event emitters

Erstellen einer ereignisgesteuerten Anwendung in node.js mithilfe von Ereignisemittern. Ein integriertes Modul, das den Kern der Architektur von node.j bildet. Der EventEmitter ist eine Klasse, die uns hilft, ein Publisher-Subscriber-Muster in node.js zu erstellen.

Wir werden sehen, wie man EventEmitter verwendet, indem wir eine Busbuchungsanwendung erstellen, mit der Benutzer Bussitze buchen können und eine E-Mail-Benachrichtigung erhalten, wenn die Buchung erfolgreich ist. Zu Beginn richten wir eine einfache Express-Anwendung mit einer /book-Route ein.

index.js

import express from "express"
import { addTrip } from "./utils"

const app = express()

app.post("/book", (req, res) = {
    const {origin, destination, date} = req.body;

    if (!(origin && destination && date)) {
        res.status(400).send("Invalid request")
    }

    addTrip({
        origin, destination, date
    }).then((response) => {
        if (response.status) {
            // send notification to user
            // we can make a request to an email service (like resend) 
            // to send the user the notification. But this will mean we'll have
            // to wait for a response from resend before sending a response to the client.
            // This makes the response time a bit longer
        } else {
            // somehting went wrong
        }
    }).catch((error) => {
        // an error occured
        res.status(400).send(error.message)
    }).finally(() => {
        res.status(200).send("Request Received")
    })
})

app.listen(3000)
Nach dem Login kopieren

Bei diesem einfachen Weg führt das Hinzufügen der Logik zum direkten Senden von E-Mail-Benachrichtigungen dazu, dass unsere API etwas langsamer wird. Wir können also einen EventEmitter verwenden, wenn wir nach dem Hinzufügen der Reise zu unserer Datenbank ein benanntes Ereignis ausgeben und ein Listener das Ereignis auswählt und die Benachrichtigung sendet. So können wir das hinzufügen.

import express from "express"
import EventEmitter from "node:events" // import the EventEmitter class
import { addTrip } from "./utils"

const app = express();
const myEmitter = new EventEmitter(); // We create an instance of the EventEmitter class

// Let's setup a listener to listen for a named event, in this case 'booking'
myEmitter.on("booking", (trip) => {
    // Make the call to your email service to send the email
    console.log(trip)
})

app.post("/book", (req, res) = {
    const {origin, destination, date} = req.body;

    if (!(origin && destination && date)) {
        res.status(400).send("Invalid request")
    }

    addTrip({
        origin, destination, date
    }).then((response) => {
        if (response.status) {
            // emit an event and the listener will pick it up
            let trip = response.data
            myEmitter.emit("book", trip)
        } else {
            // somehting went wrong
        }
    }).catch((error) => {
        // an error occured
        res.status(400).send(error.message)
    }).finally(() => {
        res.status(200).send("Request Received")
    })
})

app.listen(3000)
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonEDD mit Ereignisemittern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!