„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie kann ich eine forEach-Schleife in Node.js vorzeitig beenden?

Wie kann ich eine forEach-Schleife in Node.js vorzeitig beenden?

Veröffentlicht am 08.11.2024
Durchsuche:837

How to Prematurely Exit a forEach Loop in Node.js?

So unterbrechen Sie eine Node.js forEach-Schleife

In Situationen, in denen Sie verschachtelte Datenstrukturen rekursiv durchlaufen und für jedes Element eine Operation ausführen müssen, können Sie a verwenden Kombination aus Rekursion und forEach. Es kann jedoch vorkommen, dass Sie die forEach-Schleife vorzeitig beenden müssen.

Im Gegensatz zu einer regulären Schleife mit break- oder continue-Anweisungen fehlt forEach ein integrierter Mechanismus zum Anhalten der Iteration. Um dieses Verhalten zu simulieren, untersuchen wir drei Ansätze:

1. Der „hässliche“ Weg: Einen kontextuellen Booleschen Wert verwenden

Übergeben Sie ein zweites Argument als Kontext an forEach und speichern Sie darin einen booleschen Wert. Überprüfen Sie innerhalb der Rückruffunktion den booleschen Wert und brechen Sie ihn bei Bedarf aus. Dieser Ansatz ist optisch unattraktiv.

function recurs(comment) {
    var stop = false;
    comment.comments.forEach(function (elem) {
        recurs(elem);
        if (...) stop = true;
    }, stop);
}

2. Der „umstrittene“ Weg: Ausnahmebehandlung

Schließen Sie die forEach-Schleife in einen Try-Catch-Block ein. Wenn Sie eine Unterbrechung durchführen möchten, lösen Sie eine Ausnahme aus und fangen sie außerhalb der Schleife ab. Dieser Ansatz kann sich auf die Leistung auswirken und Bedenken hinsichtlich der Lesbarkeit des Codes hervorrufen.

try {
    comment.comments.forEach(function (elem) {
        recurs(elem);
        if (...) throw new Error("Stop Iteration");
    });
} catch (e) {
    if (e.message === "Stop Iteration") return;
}

3. Die „lustige“ Art: Die Verwendung von every()

every() ist eine bessere Option. Die Iteration durch die Sammlung wird fortgesetzt, bis die Rückruffunktion „false“ zurückgibt. Dies fungiert effektiv als Break-Anweisung.

comment.comments.every(function (elem) {
    recurs(elem);
    if (...) return false;
    return true;
});

Sie können auch some() anstelle von every() verwenden, wenn Sie lieber true zurückgeben möchten, um zu brechen.

Freigabeerklärung Dieser Artikel wird reproduziert unter: 1729171158 Wenn ein Verstoß vorliegt, wenden Sie sich bitte an [email protected], um ihn zu löschen.
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3