jQuery में, यदि आप अपने AJAX कॉलबैक विधि में कोई गलती करते हैं, तो आपको एक उचित कंसोल त्रुटि संदेश और स्टैकट्रैक मिलेगा।डोजो - निलंबन में संदर्भ त्रुटि अपवाद
$.get("https://api.github.com/users/octocat/orgs", function() {
var a = FAIL;
});
हालांकि, डोजो/अनुरोध/XHR का उपयोग कर डोजो में यह इन गूंगा गलतियों पूरी तरह से निगल लिया जा रहा है लगता है। जब मैं इसे चलाता हूं तो मेरे कंसोल में एकमात्र चीज "तब" और "हमेशा" होती है।
require(["dojo/request/xhr" ], function(xhr) {
var promise = xhr.get("https://api.github.com/users/octocat/orgs");
promise.then(function(data) {
console.log('then');
var a = FAIL;
console.log('goodbye');
}, function() {
console.log('error');
});
promise.otherwise(function() {
console.log('otherwise');
});
promise.always(function() {
console.log('always');
});
});
बहिष्कृत dojo.xhrGet का उपयोग करके, समस्या बहुत कम सुधार हुई है। मैं एक कंसोल त्रुटि संदेश मिलता है और मेरे त्रुटि हैंडलर कहा जाता है लेकिन यह केवल कहते हैं, "ReferenceError {}" और मुझे एक स्टैक ट्रेस कि कभी नहीं एक समारोह मैं खुद के लिए अंक के साथ प्रदान करता है:
dojo.xhrGet({
url: "https://api.github.com/users/octocat/orgs",
load: function() {
console.log('dojo.xhrGet.load');
var a = FAIL;
console.log('goodbye dojo.xhrGet.load');
},
error: function() {
console.log('dojo.xhrGet.error');
},
handle: function() {
console.log('dojo.xhrGet.handle');
}
});
जब एक कार्यक्रम हम लेखन गलतियों, यह अच्छा है कि हमारे पास उन गलतियों को इंगित करने के लिए क्रोम डेवलपर टूल जैसे टूल्स हैं। जब आप कोई स्टैकट्रैक और त्रुटि संदेश देख सकते हैं तो त्रुटि खोजने में लगने वाला समय स्पष्ट रूप से बहुत तेज़ होता है यदि आपको कोई प्रतिक्रिया नहीं मिलती है। मुझे डोजो में कोई प्रतिक्रिया नहीं मिली, मुझे विश्वास नहीं है कि इस तरह की एक लोकप्रिय पुस्तकालय इस तरह से काम कर सकती है। मैं क्या गलत कर रहा हूं?
यह क्या हो रहा है इसका एक बड़ा स्पष्टीकरण है। यहां आपके कोड में थोड़ा बदलाव आया है जो एक स्टैकट्रैक भी देता है: http://jsfiddle.net/5rHM6/ दुर्भाग्य से स्टैक ट्रेस सही रेखा को इंगित नहीं करता है (यह कंसोल.error लाइन को इंगित करता है)। तो यदि आप त्रुटि पकड़ना चाहते हैं, तो यह सही जवाब है; अगर आप त्रुटि खोजना चाहते हैं तो मैं अपना जवाब चुनने के इच्छुक हूं। हालांकि ऐसा लगता है कि यदि आप त्रुटि पकड़ते हैं तो उपकरण दबा दिया जाता है ताकि आप दोनों दुनिया के सर्वश्रेष्ठ न हो। –
आप सही हैं, स्टैक ट्रेस के साथ पूर्ण त्रुटि फेंकने वाली सेवा के विरोध में यह एक संदेश गुजरने वाली सेवा ("एक त्रुटि हुई") है। मैं आपको क्यू लाइब्रेरी की जांच करने का आग्रह करता हूं, यह सबसे अच्छी एसिंक्रोनस लाइब्रेरी है जिसे मैं जानता हूं और वे निश्चित रूप से इस समस्या से निपटते हैं। –