我正在编写一个向服务器发出Ajax请求的代码。我在请求之外使用try / catch进行错误处理,如下所示。搜索方法是将请求发送到服务器,如果它可以读取结果,则调用回调函数。
我问这个:因为ajax请求是异步的,如果回调内部有错误(不在搜索方法内),它会落入外部catch块还是我需要在回调中另外尝试/ catch功能
try {
service.search(function () {
var entries = service.getEntries();
$.each(entries, function (index, content) {
var cat = {
// those may throw exceptions, too
name: content.get("category"),
path: content.getPath()
};
categories.push(cat); // defined somewhere else.
});
if (categories.length < totalResults) {
// A method call may throw exception
} else if (typeof loadCallback === 'function') {
// Done.
}
});
} catch (e) {
}
答案 0 :(得分:0)
经过两三年的javascript开发,我发现捕获ajax请求错误的最佳方法是有多个回调:一个用于成功,一个用于错误。
我已经更改了Netmera HTML5 SDK中的所有方法,现在我们不需要任何try / catch块。我们需要做的就是传递两个函数参数:
service.search(function(dataArray) {
// loop through dataArray
}, function(exception) {
// Exception detail
}
在搜索方法中,它的内容如下:
this.search = function(successCallback, errorCallback) {
...
request.onreadystatechange = function () {
if (request.readyState == 4) {
if (request.status == 200) {
successCallback(...);
} else {
errorCallback(...);
}
}
};
request.ontimeout = function () {
errorCallback(...);
};
request.send(...);
};