क्या होता है: अगर मैं fetch..catch का उपयोग करता हूं और किसी अन्य फ़ंक्शन को कॉल करता हूं। उस अगले समारोह में अगर कुछ भी दुर्घटनाग्रस्त हो जाता है। यह आखिरी कैच में पकड़ा जाएगा। यह जारी रहेगा इसलिए यदि अगला फ़ंक्शन क्रैश हो जाता है तो यह अभी भी फ़ेच..कैच में पकड़ा जाएगा

मुझे क्या चाहिए: myExternalFunction() को कॉल करते समय मैं कोशिश से 'डिस्कनेक्ट' करना चाहता हूं..कैच कि फ़ेच फेंकता है।

fetch('mystuff.url')
   .then((data)=>{
      myExternalFunction();
   })
   .catch((e)=>{
      // all future errors will come here
   })

myExternalFunction(){
    // This error will be caught by fetch..catch 
    // we don't want that
    crash();
}

इसे आज़माने के लिए फ़िडलर उदाहरण

1
roady 27 मार्च 2018, 12:39

3 जवाब

यदि आप कैच का उपयोग लाने के साथ करना चाहते हैं तो मैं इस समाधान का उपयोग करने का प्रस्ताव करता हूं।

fetch("http://httpstat.us/500")
    .then(function(response) {
        if (!response.ok) {
            throw Error(response.status);
        }
        return response;
    }).then(function(response) {
        alert("ok");
    }).catch(function(error) {
        alert(error);
    });
0
Zagroda 6 मार्च 2019, 14:46

अगर हम 'एक्सटर्नल फंक्शन' को try..catch में रैप नहीं करना चाहते हैं (तब हमें अगली कॉल को भी रैप करना जारी रखना होगा और इसी तरह। ..catch कहीं और होने वाली त्रुटियों को पकड़ लेता है।

पूरी तरह से तोड़ने के लिए हमें सेटटाइमआउट के रूप में कुछ और चाहिए। इसके लिए एक बेहतर तरीका होना चाहिए।

fetch('mystuff.url')
   .then((data)=>{
      // this will break out so 'external function' doesn't get caught in catch.
      setTimeout(myExternalFunction,1);
   })
   .catch((e)=>{
      // only errors from the fetch
   })

function myExternalFunction(){
    crash(); // we are happy, it crashes without involving fetch
}
0
roady 27 मार्च 2018, 10:16

myExternalFunction() को कॉल करते समय मैं try..catch से 'डिस्कनेक्ट' करना चाहता हूं जो फेंकता है।

crash के अपवाद को myExternalFunction में ही पकड़ें।

fetch('mystuff.url')
   .then((data)=>{
      myExternalFunction();
   })
   .catch((e)=>{
      // all future errors will come here
   })

function myExternalFunction(){
    try
    { 
       crash(); 
    }
    catch(e)
    {
      //do nothing 
    }
}

या (यदि बाहरी फ़ंक्शन को संशोधित करना संभव नहीं है) catch then में भी ऐसा ही है

fetch('mystuff.url')
   .then((data)=>{
      try
      { 
         myExternalFunction();
      }
      catch(e)
      {
        //do nothing 
      }
   })
   .catch((e)=>{
      // all future errors will come here
   })

function myExternalFunction(){
    crash(); 
}
0
gurvinder372 27 मार्च 2018, 09:43