You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs-language/asynchronous/2. callbacks.md
+40-20Lines changed: 40 additions & 20 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,8 @@
1
1
# Callbacks
2
2
3
-
Οι **Callbacks** είναι ο παραδοσιακός τρόπος διαχείρισης ασύγχρονων λειτουργιών στη JavaScript. Μια `callback` είναι μια συνάρτηση που περνιέται ως παράμετρος σε μια άλλη συνάρτηση και καλείται όταν ολοκληρωθεί η ασύγχρονη λειτουργία. Ας δούμε κάποια παραδείγματα:
3
+
Οι **Callbacks** είναι ο παραδοσιακός τρόπος διαχείρισης ασύγχρονων λειτουργιών στη JavaScript.
4
+
5
+
Μια `callback` είναι μια συνάρτηση που περνιέται ως παράμετρος σε μια άλλη συνάρτηση και καλείται όταν ολοκληρωθεί η ασύγχρονη λειτουργία. Ας δούμε κάποια παραδείγματα:
4
6
5
7
```javascript
6
8
functiongreet(name, callback) {
@@ -21,6 +23,8 @@ greet('Maria', sayGoodbye);
21
23
22
24
Στο παράδειγμα αυτό, η `sayGoodBye` δίνεται ως callback στη `greet`, η οποία την καλεί μετά τον χαιρετισμό.
23
25
26
+
Ας δούμε ένα πιο ρεαλιστικό παράδειγμα με ασύγχρονη λειτουργία:
27
+
24
28
```javascript
25
29
functionfetchData(callback) {
26
30
console.log('Λήψη δεδομένων...');
@@ -43,16 +47,22 @@ fetchData(processData);
43
47
// Επεξεργασία δεδομένων...
44
48
```
45
49
46
-
:::info `setTimeout`
47
-
Η `setTimeout` είναι μια ενσωματωμένη συνάρτηση της JavaScript που καθυστερεί την εκτέλεση κώδικα για συγκεκριμένο χρονικό διάστημα. Στο παραπάνω παράδειγμα, η `setTimeout` προσομοιώνει μια ασύγχρονη λειτουργία (π.χ. αίτημα δικτύου) που διαρκεί 2000 milliseconds (2 δευτερόλεπτα). Είναι ένα από τα πιο απλά παραδείγματα ασύγχρονου κώδικα στη JavaScript.
48
-
:::
50
+
Στο παραπάνω παράδειγμα, η `fetchData` προσομοιώνει μια ασύγχρονη λειτουργία (π.χ. λήψη δεδομένων από έναν διακομιστή) χρησιμοποιώντας την `setTimeout`.
51
+
52
+
Μόλις ολοκληρωθεί η λήψη, καλεί την `processData` ως callback για να επεξεργαστεί τα δεδομένα.
49
53
50
-
Σε αυτό το παράδειγμα η επεξεργασία δεδομένων (μέσω της `processData`) εκτελείται μόνο αφού ολοκληρωθεί η λήψη δεδομένων (μέσω της `fetchData`), αξιοποιώντας έτσι την ασύγχρονη συμπεριφορά.
54
+
:::info[Σημείωση]
55
+
56
+
Η `setTimeout` είναι μια ενσωματωμένη συνάρτηση της JavaScript που καθυστερεί την εκτέλεση κώδικα για συγκεκριμένο χρονικό διάστημα. Στο παραπάνω παράδειγμα, η `setTimeout` προσομοιώνει μια ασύγχρονη λειτουργία (π.χ. αίτημα δικτύου) που διαρκεί 2000 milliseconds (2 δευτερόλεπτα).
57
+
58
+
:::
51
59
52
60
## Χειρισμός Σφαλμάτων
53
61
54
62
Στις callbacks χρησιμοποιούμε το μοτίβο **error-first** όπου το πρώτο όρισμα της `callback` είναι το σφάλμα (error) και το δεύτερο τα δεδομένα (data).
Υπάρχουν καλές πρακτικές που μπορούμε να ακολουθήσουμε για να βελτιώσουμε την αναγνωσιμότητα του κώδικα με callbacks. Μία από αυτές είναι να χρησιμοποιούμε **Ονομασμένες Συναρτήσεις** (Named Functions).
153
+
Υπάρχουν καλές πρακτικές που μπορούμε να ακολουθήσουμε για να βελτιώσουμε την αναγνωσιμότητα του κώδικα με callbacks.
136
154
137
-
### Ονομασμένες Συναρτήσεις
155
+
Μία από αυτές είναι να χρησιμοποιούμε **ονομασμένες συναρτήσεις** (named functions). Στην ουσία, αντί να ορίζουμε ανώνυμες συναρτήσεις απευθείας μέσα στις κλήσεις, μπορούμε να δημιουργήσουμε ξεχωριστές ονομασμένες συναρτήσεις για κάθε βήμα της διαδικασίας.
138
156
139
157
```javascript
140
158
consthandleUserData= (error, userData) => {
141
159
if (error) {
142
-
console.error('Σφάλμα κατά την ανάκτηση δεδομένων χρήστη:', error);
160
+
console.error('Σφάλμα στην ανάκτηση δεδομένων χρήστη:', error);
143
161
return;
144
162
}
145
163
getUserPosts(userData.id, handlePosts);
146
164
};
147
165
148
166
consthandlePosts= (error, posts) => {
149
167
if (error) {
150
-
console.error('Σφάλμα κατά την ανάκτηση αναρτήσεων:', error);
168
+
console.error('Σφάλμα στην ανάκτηση αναρτήσεων:', error);
151
169
return;
152
170
}
153
171
getPostComments(posts[0].id, handleComments);
154
172
};
155
173
156
174
consthandleComments= (error, comments) => {
157
175
if (error) {
158
-
console.error('Σφάλμα κατά την ανάκτηση σχολίων:', error);
176
+
console.error('Σφάλμα στην ανάκτηση σχολίων:', error);
Η προσέγγιση με ονομασμένες συναρτήσεις δημιουργεί μια οριζόντια ροή αντί για μια βαθιά ένθετη δομή, κάνοντας τον κώδικα πιο ευανάγνωστο και ευκολότερο στη συντήρηση.
211
+
Η προσέγγιση με ονομασμένες συναρτήσεις δημιουργεί μια οριζόντια ροή αντί για μια εμφωλευμένη δομή, κάνοντας τον κώδικα πιο ευανάγνωστο και ευκολότερο στη συντήρηση.
Παρόλο που οι callbacks θεωρούνται παλαιότερη τεχνολογία, είναι σημαντικό να τις κατανοήσουμε καθώς πολλές βιβλιοθήκες και APIs εξακολουθούν να τις χρησιμοποιούν.
226
+
207
227
:::
208
228
209
229
Στην επόμενη ενότητα, θα εξετάσουμε τα `Promises`, που προσφέρουν έναν πιο κομψό τρόπο διαχείρισης ασύγχρονων λειτουργιών.
0 commit comments