现在一个页面上有9个p,每一个p都是需要对应一个load_p_id方法,然后页面加载的时候直接在$(function() { load_p_1(); load_p_2(); load_p_3(); ... });
这样导致一个load方法出错了,后面就不执行,页面卡死的问题。这种有什么好的解决方法吗?
认证0级讲师
我觉得比较好的处理方式,是通过try..catch来捕获你的异常并且处理,这样就不会影响后续的方法的调用。
js是解释执行的,你这样写在其中一个出现错误的时候,下面的代码就停止解释了
有一个问题是,为什么你要让其中一个报错?
如果是因为特殊原因需要这个的报错,可以try...catch对错误进行处理
把你的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); }
因为一旦当前上下文有语法错误,代码就不往下执行了。
因为单线程执行的关系,没有try/catch的话,直接throw异常给解释器,解释器中断执行 解决方法是:为什么会执行出错~~~
肯定要知道为啥错了,找到错误改掉它。严格意义上说是不能出现这样的错误的,因为出现这样的错误就意味着代码写的有问题,或者逻辑不够严格。
我觉得比较好的处理方式,是通过try..catch来捕获你的异常并且处理,这样就不会影响后续的方法的调用。
js是解释执行的,你这样写在其中一个出现错误的时候,下面的代码就停止解释了
有一个问题是,为什么你要让其中一个报错?
如果是因为特殊原因需要这个的报错,可以try...catch对错误进行处理
把你的load写成异步的,结果使用callback来处理。
举个例子:
因为一旦当前上下文有语法错误,代码就不往下执行了。
因为单线程执行的关系,没有try/catch的话,直接throw异常给解释器,解释器中断执行
解决方法是:为什么会执行出错~~~
肯定要知道为啥错了,找到错误改掉它。严格意义上说是不能出现这样的错误的,因为出现这样的错误就意味着代码写的有问题,或者逻辑不够严格。