Javascript: Τι είναι τα Promises


nc
Δημοσίευση: • Share Article:

@Το αντι­κεί­με­νο Promise αντι­προ­σω­πεύ­ει την εν­δε­χό­με­νη ολο­κλή­ρω­ση (ή απο­τυ­χία) μιας ασύγ­χρο­νης λει­τουρ­γί­ας και την προ­κύ­πτου­σα τιμή της. Ένα συ­νη­θι­σμέ­νο πα­ρά­δειγ­μα χρή­σης των promises είναι η ανά­κτη­ση δε­δο­μέ­νων από μια διεύ­θυν­ση URL. Με τον τρόπο αυτό θα δη­μιουρ­γη­θεί ένα αντι­κεί­με­νο Promise που θα αντι­προ­σω­πεύ­ει τα δε­δο­μέ­να που πε­ρι­μέ­νου­με να λά­βου­με. Για πα­ρά­δειγ­μα:
 
fetch('https://​my.​api.​com/​items/​1')
  .catch(err => console.log(`Failed with error: ${err}`))
  .then(response => response.json())
  .then(json => console.log(json));
Το δύ­σκο­λο κομ­μά­τι σχε­τι­κά με τα Promises είναι η κα­τα­νό­η­ση ότι η προ­κύ­πτου­σα αξία μπο­ρεί να μην είναι αρ­χι­κά δια­θέ­σι­μη. Αντί­θε­τα, μπο­ρεί να είναι σε μία από τις τρεις κα­τα­στά­σεις:
Σε εκ­κρε­μό­τη­τα: αρ­χι­κή κα­τά­στα­ση, ούτε εκ­πλη­ρώ­θη­κε ούτε απορ­ρί­φθη­κε.
Ολο­κλη­ρώ­θη­κε: ση­μαί­νει ότι η λει­τουρ­γία ολο­κλη­ρώ­θη­κε με επι­τυ­χία.
Απορ­ρί­φθη­κε: ση­μαί­νει ότι η λει­τουρ­γία απέ­τυ­χε.
Μια εκ­κρε­μό­τη­τα Promise μπο­ρεί είτε να εκ­πλη­ρω­θεί με επι­στρο­φής τιμής είτε να απορ­ρι­φθεί με σφάλ­μα. Όταν συμ­βεί κά­ποιο από αυτά, κα­λού­νται οι συ­σχε­τι­σμέ­νοι χει­ρι­στές ( Promise.prototype.then(), Promise.prototype.catch()).
Στο προη­γού­με­νο πα­ρά­δειγ­μα, η Promise ξε­κι­νά σε κα­τά­στα­ση εκ­κρε­μό­τη­τας, έως ότου λη­φθεί μια απά­ντη­ση από τον δια­κο­μι­στή. Εάν κάτι πάει στρα­βά κατά τη διάρ­κεια αυτής της πε­ριό­δου, το Promise θα απορ­ρι­φθεί και ο χει­ρι­στής Promise.prototype.catch() θα κα­τα­γρά­ψει το σφάλ­μα στην κον­σό­λα. Δια­φο­ρε­τι­κά, η Promise θα εκ­πλη­ρω­θεί και ο πρώ­τος Promise.prototype.then() χει­ρι­στής θα εκτε­λε­στεί, επι­στρέ­φο­ντας ο ίδιος ένα νέο Promise. Η νέα υπό­σχε­ση θα εκ­πλη­ρω­θεί και θα κα­λέ­σει τον δεύ­τε­ρο Promise.prototype.then() χει­ρι­στή να κα­τα­γρά­ψει τα δε­δο­μέ­να JSON στην κον­σό­λα.

Foreach programming

Εγγραφείτε για να βλέπετε τα εξειδικευμένα άρθρα.