सबसे सुविधाजनक अपवाद निगलने से प्रोटोटाइप में एक अजाक्स-वस्तु को रोकने के लिए तरीका क्या है?

वोट
1

इस कोड पर विचार करें:

new Ajax.Request('?service=example', {
    parameters : {tags : 'exceptions'},
    onSuccess : this.dataReceived.bind(this)
});

एक अपवाद dataReceived-समारोह में जब यह अजाक्स वस्तु द्वारा कहा जाता है में कहीं भी होता है, यह कुछ अपवाद हैंडलिंग कोड और पूरी प्रक्रिया फिर चुपचाप समाप्त हो जाता है द्वारा निगल लिया है। कोई अपवाद नहीं कभी ब्राउज़र को फेंक दिया जाता है और यह (समझ में आता कारणों के लिए) एक सा डिबग करने के लिए कठिन है। वहाँ ऐसा होने से रोकने के लिए किसी भी सीधा रास्ता नहीं है?

10/05/2009 को 11:26
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
3

मुझे लगता है कि आप एक शामिल कर सकते हैं onExceptionअनुरोध विकल्पों के साथ कॉलबैक हैंडलर:

new Ajax.Request('?service=example', {
  parameters : {tags : 'exceptions'},
  onSuccess : this.dataReceived.bind(this),
  onException : function(request, ex) { // react somehow }
});

वैश्विक स्तर पर यह करने के लिए, कॉलबैक हैंडलर के साथ पंजीकृत किया जा सकता Ajax.Respondersवस्तु :

Ajax.Responders.register({
  onException: function(request, ex) {
    // react somehow
  }
});

पहला तर्क हो जाएगा Ajax.Requestउद्देश्य यह है कि कॉलबैक शुरू हो गया।

पी एस / FYI करें: अपने अपवाद में इस कोड से छुपा की जा रही है प्रोटोटाइप स्रोत :

dispatchException: function(exception) {
  (this.options.onException || Prototype.emptyFunction)(this, exception);
  Ajax.Responders.dispatch('onException', this, exception);
}

यहाँ कैसे सही ढंग से onException कॉलबैक लागू करने के लिए है।

Ajax.Responders.register({ 
        onException: function(request, exception) { 
                (function() { throw exception; }).defer(); 
        } 
});

यहाँ प्रलेखित के रूप में: https://stackoverflow.com/a/2606239/147349

10/05/2009 को 12:16
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more