मुझे javaScript समझने में परेशानी हो रही है promises
। मैंने निम्नलिखित कोड लिखा है:
var p = new Promise(function(resolve,reject){
reject(Error("hello world"));
});
setTimeout(()=>p.catch(e=>console.log(e)),5000);
मैं तुरंत अपने Chrome डेवलपर कंसोल में इसे देखता हूं:
लेकिन मैं 5 सेकंड प्रतीक्षा करने के बाद, संदेश स्वचालित रूप से इस छवि की तरह काले रंग में बदल जाता है:
मैंने अपने javaScript कोड और डेवलपर कंसोल के बीच यह व्यवहार पहले कभी नहीं देखा है, जहाँ मेरा javaScript कोड डेवलपर कंसोल में "मौजूदा सामग्री को संशोधित" कर सकता है।
इसलिए मैंने यह देखने का फैसला किया कि क्या resolve
इस कोड को लिखने के साथ भी यही स्थिति है :
var p = new Promise(function(resolve,reject){
resolve("hello world");
});
setTimeout(()=>p.then(e=>console.log(e)),5000);
लेकिन इस स्थिति में, मेरा डेवलपर कंसोल 5 सेकंड बाद तक कुछ भी नहीं दिखाता है, जिस पर वह प्रिंट करता है hello world
।
क्यों कर रहे हैं resolve
और reject
जब वे लागू कर रहे हैं के संदर्भ में तो अलग तरह से व्यवहार?
अतिरिक्त
मैंने यह कोड भी लिखा है:
var p = new Promise(function(resolve,reject){
reject(Error("hello world"));
});
setTimeout(()=>p.catch(e=>console.log("errors",e)),5000);
setTimeout(()=>p.catch(e=>console.log("errors 2",e)),6000);
setTimeout(()=>p.catch(null),7000);
यह डेवलपर कंसोल के लिए कई आउटपुट का कारण बनता है। समय पर लाल त्रुटि, पाठ के साथ 5 सेकंड के समय में लाल रंग में परिवर्तन errors hello world
, फिर समय पर एक नया त्रुटि संदेश 6 सेकंड errors 2 hello world
, फिर समय पर लाल त्रुटि संदेश 7 सेकंड। अब मैं बहुत उलझन में हूं कि reject
वास्तव में कितनी बार आह्वान किया जाता है .... मैं खो गया हूं ...
var p = new Promise(function(resolve,reject){ reject(Error("hello world")); });
अधिक मुहावरेदार और संक्षिप्त रूप सेvar p = Promise.reject(Error("hello world"));
:-) के रूप में लिखा जा सकता है