现在一个页面上有9个p,每一个p都是需要对应一个load_p_id方法,然后页面加载的时候直接在$(function() {
load_p_1();
load_p_2();
load_p_3();
...
});
这样导致一个load方法出错了,后面就不执行,页面卡死的问题。这种有什么好的解决方法吗?
巴扎黑2017-04-10 15:08:43
js是解释执行的,你这样写在其中一个出现错误的时候,下面的代码就停止解释了
有一个问题是,为什么你要让其中一个报错?
如果是因为特殊原因需要这个的报错,可以try...catch对错误进行处理
黄舟2017-04-10 15:08:43
把你的load写成异步的,结果使用callback来处理。
举个例子:
function load( parent, p, cb ) {
//异步执行,其实jquery自己的$.load就是这样的
setTimeout( function() {
try{
var fine = $(parent).append($(p));
cb(fine);
} catch (e) {
cb(e);
}
},1);
}
//结果回调函数
function result_handler( result ) {
$('body').append('<p>' + result + '</p>');
}
//你的业务代码,这样怎么出错都不会死掉,除非语法问题
for(var i = 0; i< 10; i++ ){
load('body', '<p>'+i+'</p>', result_handler);
}