• 关于ERROR RangeError:Maximum call stack size exceeded的问题


    哎,这几天在家里憋坏了,想必不止我一个人有这样的感受,整天期盼这上班。但是离上班的地方太远了,还是可望而不可即。

    好了,不瞎逼逼了。说正事;

    今天翻手机的时候无意间看到了我当时记下的这个错误“ERROR RangeError:Maximum call stack size exceeded”。这个错是我在做Angular项目时遇到的,当是出现这个错就很懵逼,然后请同组的同事都帮忙看了之后,还是无从下手。浏览器也不告诉是哪一行代码出的问题。只有看着有点后怕的“Maximum call stack size exceeded”。于是就是各种百度,百度出来的也就这几种可能出现的原因和解决方法:

    1、router里面路径没有声明,有的未定义变量,有的由于是递归函数产生死循环

    2、jquery取值的时候没有加val()

    然并卵,这些我也都排查了,还是无情的报错,漫漫长征路,还得自己来走,最后经过一些列的排查终于发现了问题所在地,

      原因是:我用订阅subscript((value)=>{})把两个项目互相监听起来了,例如:

                     A.valueChange.subscript((value)=>{

                         B.setValue(‘’);    

                     })

                     B.valueChange.subscript((value)=>{

                         A.setValue('5-01');

                     })

                     C.valueChange.subscript((value)=>{

                         B.setValue(‘bbb’);    

                     })

                     D.valueChange.subscript((value)=>{

                         A.setValue('aaa');

                     })

    这样的话,如果A和B项目在初始化的时候都是有值的,而且C和D的值的改变也会影响A和B的值,在这样的情况下就容易在A,B订阅之间造成死循环,只要浏览器不关闭,那么这个循环就会一直跑下去,等跑的浏览器栈都沾满了的话,就会出现上述的“Maximum call stack size exceeded”报错。知道了这个问题之后,解决起来也不是困难,直接在订阅执行一次之后取消订阅即可,如下。

                     A.valueChange.subscript((value)=>{

                         B.setValue(‘’);    

                         // 取消订阅

                         this.subscript.unsubscribe();

                     })

                     B.valueChange.subscript((value)=>{

                         A.setValue('5-01');

                         // 取消订阅

                         this.subscript.unsubscribe();

                     })

    总结:

      在遇到“ERROR RangeError:Maximum call stack size exceeded”报错时,解决方案可以按一下步骤:

    1、检查router里面路径有没有声明,变量有没有定义,递归函数是否产生死循环

    2、jquery取值的时候有没有加val()

    3、检查订阅是否产生死循环。

  • 相关阅读:
    密码安全等级效果
    随机生成不区分大小写的验证码
    css3的box方法实现文本水平垂直居中
    echarts省市地图显示
    mysql 连接数据库
    mysql 高版本order by 报错解决方案
    mysql 命令行操作
    mac本地运行php文件
    js 获取url参数
    js 每三位数添加逗号
  • 原文地址:https://www.cnblogs.com/lihuibin/p/12364148.html
Copyright © 2020-2023  润新知