पाठ 32 / 38

प्रॉमिस

भविष्य के मान को दर्शाने का साफ़ तरीका।

बनाना और उपयोग करना

resolve प्रॉमिस को पूरा करता है, reject उसे विफल करता है; .then() और .catch() हर नतीजे पर प्रतिक्रिया देते हैं।

const promise = new Promise((resolve, reject) => {
  setTimeout(() => resolve("Done!"), 1000);
});
promise.then((result) => console.log(result))
       .catch((err) => console.log(err));

तीन अवस्थाएँ

एक Promise पहले pending होता है, फिर fulfilled या rejected के रूप में settle होता है — settle होने के बाद उसकी अवस्था फिर कभी नहीं बदलती।

चेनिंग

हर .then() एक नया प्रॉमिस लौटाता है, इसलिए असिंक्रोनस चरणों को एक सपाट, पठनीय क्रम में जोड़ा जा सकता है।

fetchUser()
  .then((user) => fetchPosts(user.id))
  .then((posts) => console.log(posts))
  .catch((err) => console.error(err));

त्वरित जाँच: Promise चेन में .catch() क्या संभालता है?

  • केवल नेटवर्क त्रुटियाँ
  • चेन में पहले कहीं भी हुई कोई rejection
  • कुछ नहीं — यह केवल logging के लिए है
Answer

चेन में पहले कहीं भी हुई कोई rejection — पहले किसी भी .then() में हुई rejection बाकी .then() कॉल को छोड़कर सीधे नज़दीकी .catch() पर पहुँच जाती है।