DanLevy.net

क्विज़: 9 जावास्क्रिप्ट प्रॉमिस प्रश्न

वादा फिर कभी न छोड़ें!

Hero image for क्विज़: 9 जावास्क्रिप्ट प्रॉमिस प्रश्न

क्या आप JavaScript प्रॉमिसेज़ को जानते हैं?

  • अपनी JavaScript कौशल साबित करें! 🚀
  1. हिंट देखें (बड़ा बटन, नीचे कोने में)।
  2. कोड को अपने ब्राउज़र के कंसोल में चलाएँ (शॉर्टकट F12 या खोजें) या repl.it* का उपयोग करें।
  3. बेझिझक मुझे @justsml पर ट्वीट करें. आपके विचार सुनकर खुशी होगी!

👇 नीचे 9 प्रश्न पूर्ण करें 👇

निम्नलिखित कोड का आउटपुट क्या होगा?

var p = new Promise((resolve, reject) => {
reject(Error('The Fails!'))
})
p.catch(error => console.log(error.message))
p.catch(error => console.log(error.message))

हम कंस्ट्रक्टर मेथड का उपयोग करके एक Promise बनाते हैं, और reject कॉलबैक से तुरंत एक त्रुटि उत्पन्न करते हैं।

फिर .catch हैंडलर DOM के .addEventListener(event, callback) या Event Emitter के .on(event, callback) की तरह काम करते हैं जहाँ एकाधिक हैंडलर कॉलबैक जोड़े जा सकते हैं। प्रत्येक को समान आर्ग्युमेंट्स के साथ बुलाया जाएगा।

निम्नलिखित कोड का आउटपुट क्या होगा?

var p = new Promise((resolve, reject) => {
return Promise.reject(Error('The Fails!'))
})
p.catch(error => console.log(error.message))
p.catch(error => console.log(error.message))

Promise कंस्ट्रक्टर का उपयोग करते समय आपको resolve() या reject() कॉलबैक में से किसी एक को कॉल करना आवश्यक है। Promise कंस्ट्रक्टर एक्जीक्यूटर के रिटर्न वैल्यू को अनदेखा करता है, इसलिए Promise.reject() से बनाया गया अतिरिक्त प्रॉमिस p से चेन नहीं होता। दो हैंडलर p से जुड़े होते हैं, जो पेंडिंग रहता है, जबकि लौटाया गया अस्वीकृत प्रॉमिस होस्ट वातावरण द्वारा अप्रबंधित के रूप में रिपोर्ट किया जाता है।

निम्नलिखित कोड का आउटपुट क्या होगा?

new Promise((resolve, reject) => {
resolve('Success!')
})
.then(() => {
throw Error('Oh noes!')
})
.catch(error => {
return "actually, that worked"
})
.catch(error => console.log(error.message))

संकेत: .catch’s का उपयोग त्रुटियों को अनदेखा (या ओवरराइड) करने के लिए किया जा सकता है, बस एक सामान्य मान लौटाकर।

पहला कैच सामान्य रूप से स्ट्रिंग लौटाकर अपना प्रॉमिस fulfilled कर देता है। इसके लिए बाद में .then होना आवश्यक नहीं है। चेन सफल हो चुकी है, इसलिए दूसरा कैच नहीं चलता। चले हुए हैंडलरों में कोई मान लॉग नहीं करता।

निम्नलिखित कोड का आउटपुट क्या होगा?

Promise.resolve('Success!')
.then(data => {
return data.toUpperCase()
})
.then(data => {
console.log(data)
})

Hint: .then डेटा को क्रमिक रूप से पास करता है, return value से अगले .then(value => /* handle value */) तक।

एक return अगली .then को मान पास करने के लिए महत्वपूर्ण है।

निम्नलिखित कोड का आउटपुट क्या होगा?

Promise.resolve('Success!')
.then(data => {
return data.toUpperCase()
})
.then(data => {
console.log(data)
return data
})
.then(console.log)

यहाँ 2 console.log कॉल हैं जो चलेंगे।

निम्नलिखित कोड का आउटपुट क्या होगा?

Promise.resolve('Success!')
.then(data => {
data.toUpperCase()
})
.then(data => {
console.log(data)
})

Hint: .then डेटा को क्रमिक रूप से पास करते हैं, return value से अगले .then(value => /* handle value */) तक।

अगले .then को मान पास करने के लिए return महत्वपूर्ण है।

निम्नलिखित कोड का आउटपुट क्या होगा?

Promise.resolve('Success!')
.then(() => {
throw Error('Oh noes!')
})
.catch(error => {
return 'actually, that worked'
})
.then(data => {
throw Error('The fails!')
})
.catch(error => console.log(error.message))

पहला .catch कुछ प्रिंट किए बिना एक स्ट्रिंग लौटाकर चेन को सफल बना देता है। अगला .then Error('The fails!') फेंकता है, और अंतिम .catch केवल उसका संदेश प्रिंट करता है: The fails!।

annotated-code/question-9-4.webp