2015-03-29 6 views
12

मैं एक कोड लिख रहा हूं जो जावास्क्रिप्ट में ECMAScript 6-जैसे वादे का भारी उपयोग करता है।क्या त्रुटि या स्ट्रिंग के साथ वादा किया जाना चाहिए?

मैं तय नहीं कर सकता, अगर यह एक तार के साथ या एक त्रुटि के साथ वादा अस्वीकार करने के लिए, के बाद से मैं इन पैटर्न के दोनों इस्तेमाल किया जा रहा देखा है और अधिक "सही" है।

यही है, अगर यह बेहतर है फोन करने के लिए

return new Promise(response, reject) { 
    reject("Sky is falling."); 
} 

या

return new Promise(response, reject) { 
    reject(new Error("Sky is falling.")); 
} 
+1

दोनों मान्य हैं। महत्वपूर्ण बात कुछ अर्थपूर्ण के साथ वादा को अस्वीकार करना है। – brianvaughn

+1

मुझे उम्मीद है कि यह समझ में आता है कि मेरा छोटा उदाहरण सिर्फ चित्रण के लिए है और वास्तविक कोड नहीं है :) –

उत्तर

10

मोज़िला प्रलेखन पर एक नज़र उपयोगी है: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/reject

Promise.reject("Testing static reject").then(function(reason) { 
    // not called 
}, function(reason) { 
    console.log(reason); // "Testing static reject" 
}); 

Promise.reject(new Error("fail")).then(function(error) { 
    // not called 
}, function(error) { 
    console.log(error); // Stacktrace 
}); 

यह दोनों तार और त्रुटियों के रूप में पता चलता है एक अस्वीकृति के लिए वैध "कारण"। मुख्य बात (मुझे लगता है) यह है कि "कारण" सार्थक होना चाहिए।

एक स्टैक ट्रेस उपयोगी है तो यह बेहतर होगा एक त्रुटि प्रदान करने के लिए कर सकते हैं। यदि एक साधारण स्ट्रिंग की आवश्यकता होती है, तो यह पर्याप्त होगा।

+0

मोज़िला के दस्तावेज़ों के वर्तमान संस्करण पर 'परीक्षण स्थिर अस्वीकार' भाग अब गायब है। केवल 'त्रुटि' ऑब्जेक्ट से अस्वीकार कर दिया गया है। – Martin

संबंधित मुद्दे

 संबंधित मुद्दे