2016-04-23 13 views
6

यहाँ अंदर समारोह अस्वीकार प्रश्न में कोड है यह Uncaught (in promise)"Uncaught (वादा में)" जब बुला लाए जाने 'फिर' विधि

फेंकता रहा .then कॉल के बाद

fetch(`/_api/myAPI`, opts) 
    .then((res) => { 
    if (!res.ok) { 
     reject(res); 
    } else { 
     ... 
    }) 
    .catch((e) => { 
    console.log(e); 
    } 

यह अभी भी होता है एक .catch जोड़ने के लिए, यानी के बाद भी।

क्यों reject इस अपवाद को फेंक देगा और मैं इसे कैसे ठीक कर सकता हूं? मेरा अनुभव jQuery.Promise तक सीमित है और मैं reject नहीं करता हूं, विफलता हैंडलर इस त्रुटि को ट्रिगर करेगा।

+2

रैपिंग एक नया वादा में वादा लाने है (http://stackoverflow.com/questions/23803743/what-is-the-explicit-promise-construction-antipattern-and-how-do मैं-बचने-यह)। और यह यहां दुष्प्रभाव का कारण बनता है। – estus

+0

@estus जानकारीपूर्ण टिप्पणी के लिए धन्यवाद! –

उत्तर

9

जब आप वादे को खारिज कर रहे हैं, तो आप उस पूरे ऑपरेशन को लपेटने वाले वादे को तुरंत अस्वीकार कर रहे हैं, ताकि आप उस पकड़ने वाले ब्लॉक तक कभी नहीं पहुंच सकें।

एक समानता: अस्वीकार करने और हल करने का वादा किया जाता है क्योंकि रिटर्न कार्यों के लिए होता है।

मुझे लगता है कि आप जो करने का प्रयास कर रहे हैं वह नीचे दिया गया कोड है। [एक antipattern]

new Promise((resolve, reject) => { 
    const opts = { 
    credentials: 'same-origin', 
    }; 
    fetch(`/_api/myAPI`, opts) 
    .then((res) => { 
    if (!res.ok) { 
     return Promise.reject() 
    } else { 
     ... 
     resolve(...); 
    }) 
    .catch((e) => { 
    console.log(e); 
    reject(); 
    } 
} 
+0

मुझे पता है कि यह धागा पुराना है लेकिन क्या यह संभव है कि कम से कम क्रोम में, यह * हमेशा * वादे को अस्वीकार करते समय उस त्रुटि को प्रदर्शित करता है? मुझे लगता है कि मैं यही देख रहा हूं। मैंने इसे कुछ भी करने का वादा नहीं किया जो तुरंत अस्वीकार करता है और अभी भी त्रुटि प्राप्त करता है। क्या कोई और इस व्यवहार को देखता है? –

+0

मेरा मानना ​​है कि आप भी सही हैं। मेरा कोड पकड़ तक पहुंचता है, और मैंने दोनों को एक त्रुटि फेंकने की कोशिश की है और केवल वादा करता हूं। अस्वीकार()। दोनों मेरे लिए क्रोम में प्रदर्शित करते हैं। –

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