Promise.resolve
आपके द्वारा पारित मूल्य के साथ हल किया गया एक नया वादा तैयार करेगा। तो, आपके मामले में, आपका वादा वास्तव में फ़ंक्शन ऑब्जेक्ट के साथ हल हो जाता है। इसका मतलब है कि, then
हैंडलर फ़ंक्शन ऑब्जेक्ट को ही पास कर दिया गया है।
तुम क्या करना चाहिए था
new Promise((resolve, reject) => resolve('John'))
.then(args => {
console.log(args);
throw new Error('ops')
})
.catch(console.log.bind(console));
है अब, आप एक Promise
वस्तु का निर्माण कर रहे हैं और आप उस के समाधान कर रहे हैं मूल्य John
साथ।
यदि आप चाहते हैं अपने वादा आसानी से एक मूल्य के साथ हल किया जा करने के लिए है, तो समारोह वस्तु पारित लेकिन Promise.resolve
कार्य करने के लिए वास्तविक मूल्य ही नहीं भेजी जाती।
Promise.resolve('John')
.then(args => {
console.log(args);
throw new Error('ops')
})
.catch(console.log.bind(console));
अब, आप एक वादा, मूल्य John
के साथ हल किया है और then
हैंडलर का समाधान मूल्य John
मिल जाएगा।
नोट: यह एक वादा बनाते समय आप आसानी से हल करने के लिए, ताकि आप Promise constructor anti-pattern से बच सकते हैं वास्तविक रास्ता पता की सिफारिश की तरह से।
अगर आप चाहते हैं 'जॉन', आप अपने कॉल में अज्ञात फ़ंक्शन कॉल करने की आवश्यकता()
Promise.resolve(function(){return 'John';}());
नोटिस को हल करने
मुझे लगता है कि आउटपुट जॉन होना चाहिए, लेकिन इसके बजाय यह '[फंक्शन]' - 'console.log (() => 'जॉन') है) - देखें - मैंने वहां क्या किया? –
'console.log (args());' आउटपुट * जॉन * – cgTag