# प्रॉमिस — जावास्क्रिप्ट

Source: https://www.geekswithgeeks.com/hi/javascript/js-promises

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

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

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

```js
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()` एक नया प्रॉमिस लौटाता है, इसलिए असिंक्रोनस चरणों को एक सपाट, पठनीय क्रम में जोड़ा जा सकता है।

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

**Quiz:** Promise चेन में .catch() क्या संभालता है?

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

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