मुझे पता है कि जे एस में वादे अपरिवर्तनीय हैं।

इसके अनुसार: वादों के अपरिवर्तनीय होने और उनके गारंटीकृत मूल्य का क्या अर्थ है?

एक वादा एकतरफा कुंडी है। एक बार इसे एक मूल्य या with किसी कारण से अस्वीकृत, इसकी स्थिति और मूल्य/कारण कभी नहीं बदल सकते हैं।strong तो, आप कितनी भी बार करें .then() एक ही वादे पर, आप हमेशा एक ही परिणाम मिलेगा।

इसलिए मैं इस छवि को लेकर भ्रमित हूं: https:/ /developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise यहां छवि विवरण दर्ज करें

ऐसा लगता है कि वादा या तो पूरा हो गया है या अस्वीकार कर दिया गया है (हल किया गया है) यह एक वादा लौटाता है जो (लंबित) है। ऐसा क्यों है?

0
csguy 14 जून 2020, 22:16

1 उत्तर

सबसे बढ़िया उत्तर

.then() या .catch() को हर कॉल एक नया वादा देता है। .then() या .catch() हैंडलर में क्या होता है, इसके आधार पर उस वादे को हल या अस्वीकार कर दिया जाएगा, जो उस हैंडलर को कॉल करने पर प्राप्त होता है। श्रृंखला की शुरुआत में वादा वास्तव में अपरिवर्तनीय है, लेकिन एक बार जब कोई और उस पर .then() या .catch() कॉल करता है, तो उन्हें उन प्रत्येक कॉल से एक नया वादा वापस मिलता है, जिनकी स्थिति निर्धारित होती है कि अंदर क्या होता है कोड जो .then() या .catch() हैंडलर में चलता है।

जब आप .then() या .catch() से वह नया वादा प्राप्त करते हैं तो यह हमेशा लंबित स्थिति में रहेगा क्योंकि .then() या .catch() के अंदर के कोड को अभी तक कॉल नहीं किया गया है (मूल वादा ने अभी तक उन्हें नहीं बुलाया है)। वे बयान सिर्फ मूल वादे पर हैंडलर पंजीकृत करते हैं।

जब उन संचालकों को बुलाया जाता है, तो वे नए वादे की स्थिति का निर्धारण करेंगे। यदि वे एक सादा मूल्य लौटाते हैं, तो उस मूल्य के साथ उस नए वादे का समाधान किया जाएगा। अगर वे फेंक देते हैं, तो वह नया वादा खारिज कर दिया जाएगा। यदि वे एक वादा वापस करते हैं, तो वह नया वादा उस नए वादे की अंतिम स्थिति का पालन करेगा जो .then() या .catch() हैंडलर के रूप में लौटाया गया था और यह वापस किए गए वादे के रूप में हल या अस्वीकार कर देगा।

3
jfriend00 14 जून 2020, 22:32