टिप्पणियों में दोनों उत्तरों के विपरीत - एक अंतर है।
जबकि
Promise.resolve(x);
मूल रूप से के रूप में ही है
new Promise(function(r){ r(x); });
एक सूक्ष्मता है।
रिटर्निंग फ़ंक्शंस में आम तौर पर गारंटी होनी चाहिए कि उन्हें सिंक्रोनाइज़ नहीं करना चाहिए क्योंकि वे एसिंक्रोनस रूप से फेंक सकते हैं। अप्रत्याशित परिणाम और दौड़ की स्थिति को रोकने के लिए - फेंकता को आमतौर पर लौटाए गए अस्वीकारों में बदल दिया जाता है।
इसे ध्यान में रखते हुए - जब कल्पना की गई थी कि वादे का निर्माणकर्ता सुरक्षित है।
क्या होगा अगर someObjectहै undefined?
- जिस तरह से ए एक खारिज कर दिया वादा वापस करता है।
- जिस तरह से बी तुल्यकालित फेंकता है।
ब्लूबर्ड ने इसे देखा, और पेटका ने Promise.methodइस मुद्दे को संबोधित किया ताकि आप रिटर्न वैल्यू का उपयोग कर सकें। तो ब्लूबर्ड में इसे लिखने का सही और आसान तरीका वास्तव में है ही नहीं - यह है:
var someFunction = Promise.method(function someFunction(someObject){
someObject.resolved = true;
return someObject;
});
Promise.method फेंकता को अस्वीकार कर देगा और आपके लिए हल पर लौटेगा। यह ऐसा करने के लिए सबसे अधिक सुरक्षित तरीका है और यह thenएब्स को रिटर्न वैल्यू के माध्यम से आत्मसात करता है, भले ही यह काम करेsomeObject यह वास्तव में एक वादा हो।
सामान्य तौर पर, Promise.resolveवादों के लिए वस्तुओं और विदेशी वादों (तबेले) को कास्टिंग के लिए उपयोग किया जाता है। वह इसका उपयोग मामला है।
Promise.resolveबस चीनी है