Ich bin neu in Node.Js und JavaScript Web-Entwicklung auf dem Backend. Ich sehe, dass Rückrufe innerhalb von Rückrufen ein Schmerz sein können und es Module gibt, die das vermeiden. Eines dieser Module ist async, Ссылка
Ich habe die Dokumentation gelesen, aber es ist schwer zu beginnen und zu verstehen, wie es geht.
Zum Beispiel habe ich diese Funktion "check_aut_user", Wie kann ich diesen Code mit async konvertieren?
%Vor%Beste Grüße,
Aus meiner Sicht ist Callback-Hölle wirklich eine Mischung aus zwei Problemen:
Entweder in kleinen Mengen ist in Ordnung, aber zusammen machen sie Code starr und nicht wartbar. Die Lösung zur Vermeidung der Callback-Hölle besteht darin, diese beiden Dinge zu vermeiden:
Nach diesen Prinzipien kann Ihr Code wie folgt umgeschrieben werden:
%Vor% Ich habe async.auto
hier verwendet, auch wenn async.waterfall
dies tun würde. Der Grund dafür ist, dass es schwierig ist, Schritte in waterfall
zu verschieben, hinzuzufügen oder zu entfernen, und das war eine Fehlerquelle. Mit auto
können Sie Schritte hinzufügen, ohne sich Sorgen zu machen, und die Reihenfolge / Parallelität wird asynchron gehandhabt.
Das verwendet offensichtlich viel mehr vertikalen Platz, aber ich denke, das ist ein kleiner Preis für die Modularität.
Es gibt verschiedene Möglichkeiten, die außer Kontrolle geratene Verschachtelung mit funktionalen Programmiertechniken zu bekämpfen. Ich verwende das Modul curry
, um Schleifenkörper in eigenständige Routinen zu zerlegen. in der Regel hat dies einen sehr geringen Leistungseinbruch gegenüber der Verschachtelung (Studie curry
für warum). Beispiel:
Anstelle von:
%Vor%Das zweite Beispiel ist kompakter, aber je mehr Verschachtelung Sie hinzufügen, desto weniger lesbar wird es. Durch Aufteilen der Implementierung können Sie Komponentenfunktionen auf verschiedene Arten wiederverwenden. Außerdem können Sie Einheitentests für die einzelnen Komponentenfunktionen schreiben, nicht nur für die Funktionen auf hoher Ebene.
Hier ist der Code geändert, um Async wann immer erforderlich zu verwenden.
%Vor%Offensichtlich macht es den Code nicht lesbarer. Ich würde zusätzliche Änderungen vorschlagen:
Diese beiden Methoden würden beide Callbacks annehmen. Hier ist ein Umschreiben:
%Vor%Somit wird unsere Hauptmethode nun:
%Vor%Ich hoffe, Sie können sehen, dass dies viel viel besser ist.
Tags und Links node.js node-async