1
00:00:03,920 --> 00:00:08,675
In dieser Vorlesung und der folgenden Übung

2
00:00:08,675 --> 00:00:12,000
werden wir speziell über Callback Hell sprechen.

3
00:00:12,000 --> 00:00:15,330
Das Problem, das auftritt, wenn Sie

4
00:00:15,330 --> 00:00:19,980
Callbacks in Knoten und insbesondere verschachtelte Callbacks und Knoten schreiben.

5
00:00:19,980 --> 00:00:26,795
Wir werden auch Versprechen als eine Möglichkeit betrachten, das Callback Hell Problem zu beheben.

6
00:00:26,795 --> 00:00:34,340
Um Ihnen eine Vorstellung davon zu geben, was das typische Callback Hell Problem verursachen wird,

7
00:00:34,340 --> 00:00:40,115
besuchen wir die Datei index.js aus der vorherigen Übung erneut.

8
00:00:40,115 --> 00:00:44,020
Wie ich in der vorherigen Übung darüber gesprochen habe

9
00:00:44,020 --> 00:00:47,959
, bemerken Sie, dass für jede der Operationen, die wir ausführen,

10
00:00:47,959 --> 00:00:53,990
die nachfolgende Operation in der Callback-Funktion enthalten ist

11
00:00:53,990 --> 00:01:00,320
und so weiter, bis Sie eine Pyramidenähnliche Struktur wieder bilden.

12
00:01:00,320 --> 00:01:06,160
Sie sehen also diese pyramidenähnliche Struktur, die in Ihrem Code entsteht.

13
00:01:06,160 --> 00:01:11,540
Stellen Sie sich nun vor, dass Sie mehrere verschachtelte Operationen wie diese ausführen müssen,

14
00:01:11,540 --> 00:01:13,850
wird Ihr Code ziemlich bald,

15
00:01:13,850 --> 00:01:18,085
sehr komplex und nicht so einfach zu entziffern.

16
00:01:18,085 --> 00:01:22,240
Nun, das ist, was in der node.js Welt,

17
00:01:22,240 --> 00:01:25,830
sie als Callback Hell bezeichnet.

18
00:01:25,960 --> 00:01:30,845
Es gab mehrere Möglichkeiten, das auftretende Problem zu mildern.

19
00:01:30,845 --> 00:01:35,690
Jetzt können Sie dies vollständig vermeiden

20
00:01:35,690 --> 00:01:38,300
, da Sie bestimmte Operationen haben, die

21
00:01:38,300 --> 00:01:41,480
abgeschlossen werden müssen, bevor der nächste Vorgang initiiert werden kann,

22
00:01:41,480 --> 00:01:47,765
aber wir können den Code so neu anordnen, dass dieses Problem gemildert wird.

23
00:01:47,765 --> 00:01:52,080
Versprechungen sind eine solche Möglichkeit, dies anzugehen.

24
00:01:52,080 --> 00:01:56,015
Also, um zusammenzufassen, was wir gerade diskutiert haben,

25
00:01:56,015 --> 00:01:59,435
stark verschachtelter Callback-Code,

26
00:01:59,435 --> 00:02:02,990
verursacht das Callback Hell Problem und es

27
00:02:02,990 --> 00:02:07,010
resultiert aus unserer Tendenz, Programme von oben nach unten zu schreiben.

28
00:02:07,010 --> 00:02:11,990
Wir sind immer noch mit unserer sequentiellen Art des Schreibens von Code aufgehängt und

29
00:02:11,990 --> 00:02:17,420
so sehen wir es bequemer, Code von oben nach unten zu schreiben

30
00:02:17,420 --> 00:02:21,145
und ihn so zu betrachten, als ob er in dieser Reihenfolge ausgeführt wird.

31
00:02:21,145 --> 00:02:24,140
Jetzt können wir das Callback Hell Problem umgehen, indem wir

32
00:02:24,140 --> 00:02:27,460
keine anonymen Funktionen für die Callbacks verwenden, sondern

33
00:02:27,460 --> 00:02:30,870
diese Funktionen mit bestimmten Namen deklarieren

34
00:02:30,870 --> 00:02:35,630
und dann vermeiden, wie wir den Code schreiben, wie Sie hier gesehen haben.

35
00:02:35,630 --> 00:02:41,190
Das ist einer der Ansätze, die Leute ergreifen, um mit dem Callback Hell Problem umzugehen.

36
00:02:41,190 --> 00:02:44,990
Es gibt mehrere andere Ansätze, die vorgeschlagen wurden,

37
00:02:44,990 --> 00:02:51,085
Links zu einigen Artikeln in dieser Hinsicht sind in den zusätzlichen Ressourcen zur Verfügung gestellt.

38
00:02:51,085 --> 00:02:53,720
Aber in diesem speziellen Vortrag

39
00:02:53,720 --> 00:02:56,810
werde ich mich auf einen bestimmten Ansatz konzentrieren, der

40
00:02:56,810 --> 00:03:00,275
verwendet wird, um das Callback Hell Problem zu behandeln,

41
00:03:00,275 --> 00:03:02,370
nämlich die Verwendung von Versprechen.

42
00:03:02,370 --> 00:03:07,345
So können wir Versprechungen verwenden, um das Callback Hell Problem in gewissem Maße zu zähmen.

43
00:03:07,345 --> 00:03:12,200
Wir werden uns ansehen, wie Versprechen uns in dieser Hinsicht helfen und in

44
00:03:12,200 --> 00:03:17,180
der Übung werden wir sehen, wie, weil der NODE-MONGO DB-Treiber bereits

45
00:03:17,180 --> 00:03:21,665
eine Proxy-Schnittstelle unterstützt, können wir diese nutzen, um unseren Code neu zu schreiben,

46
00:03:21,665 --> 00:03:27,495
um die versprechende Unterstützung im MONGO DB-Treiber zu nutzen.

47
00:03:27,495 --> 00:03:31,455
Kurz zusammenfassen, was ein Versprechen ist.

48
00:03:31,455 --> 00:03:35,625
Ein Versprechen ist ein Mechanismus, der asynchrone Berechnungen unterstützt.

49
00:03:35,625 --> 00:03:39,250
Wenn Sie also viel Arbeit haben, die getan werden muss,

50
00:03:39,250 --> 00:03:43,550
fungiert das Versprechen als Stellvertreter für einen Wert,

51
00:03:43,550 --> 00:03:48,100
der im Moment nicht bekannt ist, aber das Versprechen wird Ihnen gegeben.

52
00:03:48,100 --> 00:03:50,270
Aber wenn der Wert verfügbar wird,

53
00:03:50,270 --> 00:03:53,225
wird er in Zukunft verfügbar sein.

54
00:03:53,225 --> 00:03:56,690
Das Versprechen stellt also einen Platzhalter für diesen Wert dar.

55
00:03:56,690 --> 00:03:58,795
Wenn der Wert korrekt ist,

56
00:03:58,795 --> 00:04:02,240
wird Ihr Versprechen korrekt ausgeführt und Sie können

57
00:04:02,240 --> 00:04:08,735
einen Code ausführen lassen, um die Tatsache zu handhaben, dass das Versprechen korrekt aufgelöst wurde,

58
00:04:08,735 --> 00:04:12,950
wenn nicht, dann behandeln Sie den Fehler in dieser Situation.

59
00:04:12,950 --> 00:04:20,060
Also, ein Versprechen wird entweder in Entschlossenheit oder die Ablehnung des Versprechens lösen.

60
00:04:20,060 --> 00:04:23,515
Ein ausstehendes Versprechen kann entweder aufgelöst werden

61
00:04:23,515 --> 00:04:27,105
, wenn der Wert korrekt erhalten wird. In diesem Fall

62
00:04:27,105 --> 00:04:31,755
wird es aufgelöst oder was wir als Erfüllung des Versprechens nennen.

63
00:04:31,755 --> 00:04:33,540
Also, wenn das Versprechen gelöst ist,

64
00:04:33,540 --> 00:04:35,960
dann haben Sie einen Code, der

65
00:04:35,960 --> 00:04:38,760
die Tatsache behandelt, dass das Versprechen gelöst wurde.

66
00:04:38,760 --> 00:04:40,455
Wenn das Versprechen abgelehnt wird,

67
00:04:40,455 --> 00:04:43,985
sollten Sie diese Situation auch mit

68
00:04:43,985 --> 00:04:48,470
der Ablehnung des Versprechens entsprechend in Ihrem Code umgehen.

69
00:04:48,470 --> 00:04:52,400
Das ist also der Grund, wenn Sie ein Versprechen erstellen, geben

70
00:04:52,400 --> 00:04:56,680
Sie nur die Lösung und die Ablehnungsoptionen daraus an.

71
00:04:56,680 --> 00:05:02,905
Die Auflösungsoption wird in der Regel vom Arzt dann Option für Ihr Versprechen behandelt.

72
00:05:02,905 --> 00:05:05,960
Warum verwenden wir Versprechungen?

73
00:05:05,960 --> 00:05:08,060
Versprechen werden verwendet, weil es

74
00:05:08,060 --> 00:05:13,130
das Callback-Hölle Problem zu einem großen Teil adressiert und Versprechen geändert werden können.

75
00:05:13,130 --> 00:05:15,860
Zum Beispiel, wenn Sie ein Versprechen haben, das

76
00:05:15,860 --> 00:05:20,690
wiederum einen Aufruf an ein anderes auslöst, das ein Versprechen zurückgibt.

77
00:05:20,690 --> 00:05:26,525
Die Handhabung des Versprechens kann in das Handle des vorherigen Versprechens geändert werden.

78
00:05:26,525 --> 00:05:28,315
Sie können also eine Reihe von

79
00:05:28,315 --> 00:05:33,635
Aufrufen haben, die die Rückgabe des Wertes behandeln.

80
00:05:33,635 --> 00:05:39,930
Jetzt werden wir die Verwendung dieses in der Übung sehen, die dieser Vorlesung folgt.

81
00:05:39,930 --> 00:05:42,275
Um ein Versprechen zu konsumieren,

82
00:05:42,275 --> 00:05:47,675
registrieren Sie eine geeignete Callback-Funktion,

83
00:05:47,675 --> 00:05:50,810
wenn der Verbraucher eines

84
00:05:50,810 --> 00:05:53,750
Versprechens entweder über die Erfüllung oder die Ablehnung der Zusage benachrichtigt wird.

85
00:05:53,750 --> 00:05:59,860
Die Callbacks werden also über die.then () für das Versprechen registriert.

86
00:05:59,860 --> 00:06:07,040
Sie werden die.catch () verwenden, um die Fehler innerhalb des Rückgabeversprechens abzufangen.

87
00:06:07,040 --> 00:06:09,845
Nun können die.then () -Methoden

88
00:06:09,845 --> 00:06:15,205
miteinander verkettet werden, wie Sie in der folgenden Übung sehen werden.

89
00:06:15,205 --> 00:06:19,730
Als Beispiel würden Sie normalerweise ein Versprechen verarbeiten, indem Sie

90
00:06:19,730 --> 00:06:26,250
die.then () und der.catch () an den Promise-Wert verketten.