在 jQuery 中,如果您在 ajax 回调方法中出错,您将收到正确的控制台错误消息和堆栈跟踪。
$.get("https://api.github.com/users/octocat/orgs", function() {
var a = FAIL;
});
然而,在使用 dojo/request/xhr 的 dojo 中,这些愚蠢的错误似乎被完全吞没了。当我运行它时,我的控制台中唯一的东西是“然后”和“总是”。
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');
}
});
在编写程序时我们会犯错误,很高兴我们有像 chrome 开发者工具这样的工具来指出这些错误。当您可以看到堆栈跟踪和错误消息时,发现错误所需的时间显然比没有收到反馈要快得多。我在道场没有得到任何反馈,我不敢相信这样一个受欢迎的图书馆可以这样运作。我究竟做错了什么?