【发布时间】:2013-02-15 16:58:00
【问题描述】:
我正在从 AJAX 查询中加载一些 JSON 数据:
$.ajax({'url': url, type: params.method, 'data': data, timeout: this.settings.timeout, success: function(d,a,x){
console.log('request Complete',params.endpoint,params.params);
var json = null;
try {
json = JSON.parse(d);
} catch(e) {
console.error(e);
}
console.log('json');
// omitted for brevity...
}
});
我在 chrome 中看到偶尔的“Aw,Snap”崩溃,其中最后一个 console.log 是“请求完成”(错误或第二个日志永远不会显示)。
我想重要的是要注意数据可能很大(有时大到 ~15Mb),这就是为什么我没有在每个请求上打印出 d 并寻找格式错误的 JSON(但...我可能会导致)。 FWIW,我也试过 $.parseJSON 而不是 JSON.parse
我对“Aw, Snap”错误的研究充其量是模糊的。我最好的猜测是这是一个OOM。不幸的是,我无法减少结果集的占用空间。
有什么方法可以让我至少优雅地失败?
【问题讨论】:
-
JSON.parse中的 OOM 至少不会导致崩溃。 -
"...数据可能很大(有时大到 ~15Mb)" 可能是您的问题。
try/catch对此无济于事。 -
...见this question
标签: javascript jquery ajax json google-chrome