Πώς να κάνετε ταυτόχρονες κλήσεις API στο JavaScript (Node.js) χρησιμοποιώντας το async-await

Με την εγγενή εφαρμογή του async-await στο JavaScript θα μπορούσαμε να το εκμεταλλευτούμε για να κάνουμε ταυτόχρονες αιτήσεις σε έναν διακομιστή API. Σε αυτό το παράδειγμα θα χρησιμοποιούσα τον «axios» έναν πελάτη HTTP βασισμένο σε υπόσχεση που θα μας επιτρέψει να υποβάλουμε αιτήματα, αλλά οποιοσδήποτε άλλος πελάτης HTTP βασισμένος σε υπόσχεση θα λειτουργούσε πολύ καλά συμπεριλαμβανομένου του αιτήματος-υπόσχεσης και του node-fetch.

Ας ξεκινήσουμε με την επισκόπηση εφαρμογής. Θα χρησιμοποιούσαμε το "https://jsonplaceholder.typicode.com/posts/number" ως ένα τελικό σημείο API για να κάνουμε τα αιτήματα GET. Έχουμε μια σειρά από ταχυδρομικούς αριθμούς που ορίζονται στη μεταβλητή postNumberList. Ας πούμε ότι έχουμε ένα σωρό αριθμούς θέσεων των οποίων οι πληροφορίες πρέπει να πάρουμε.

const postNumberList = ['1', '3', '4', '5', '7', '8', '9', '10']

Ας δημιουργήσουμε μια συνάρτηση async αποκαλούμενη getData η οποία θα επιστρέψει δεδομένα από όλα τα αιτήματα. Μέσα στη συνάρτηση θα κάναμε αυτά τα αιτήματα να διαγράφουν τον πίνακα postNumberList και να τα αποθηκεύουμε σε έναν πίνακα που ονομάζεται axiosRequests. Αυτή η σειρά θα είναι μια δέσμη υποσχέσεων αφού το 'axios.get ()' επιστρέφει μια υπόσχεση.

Στη συνέχεια, θα περιμένουμε την απάντηση από όλες αυτές τις υποσχέσεις χρησιμοποιώντας τη μέθοδο Promise.all () και χρησιμοποιώντας τη λέξη-κλειδί 'await'. Η λέξη-κλειδί 'αναμονή' πρόκειται να περιμένει μέχρι να επιλυθούν όλες οι υποσχέσεις και μόνο τότε να εκτελεστεί περαιτέρω ο κώδικας.

const axios = απαιτούν ('axios');
const getData = async (αριθμόςList) => {
  const requestURL = 'https://jsonplaceholder.typicode.com/posts/';
  const axiosRequests = postNumberList .map (αριθμός => axios.get (requestURL + αριθμός))?
  const responseData = περιμένετε Promise.all (axiosRequests);
  const επιστροφήData = responseData.map (απαντήσεις => απαντήσεις.);
  επιστροφή επιστροφήςData;
}}

Για να χρησιμοποιήσουμε αυτή τη συνάρτηση getData () πρέπει να την περιτυλίξουμε σε άλλη συνάρτηση async και να περιμένουμε την απάντηση αφού χρησιμοποιούμε τη λέξη-κλειδί 'async', η συνάρτηση επιστρέφει αυτόματα ένα Promise. Πρέπει να περιμένουμε για την επίλυση αυτής της υπόσχεσης, προκειμένου να χρησιμοποιήσουμε τα παρασυρθέντα δεδομένα.

const printData = async () => {console.log (περιμένετε getData (postNumberList))
}}
printData ()

ΣΥΜΠΕΡΑΣΜΑ

Η async περιμένουν λέξεις-κλειδιά που μας επιτρέπουν να κάνουμε ταυτόχρονες αιτήσεις χρησιμοποιώντας τον πελάτη HTTP βασισμένο σε Promise σε μια πολύ πιο καθαρή και εύκολη στην ανάγνωση δομή του κώδικα. Ευχαριστώ για την ανάγνωση και ελπίζω ότι βρήκατε αυτό το άρθρο χρήσιμο