关于“Maximum call stack size exceeded”的解决方法

关于“Maximum call stack size exceeded”的解决方法

对于这个问题网上也是各有各的说法,我就给出一个自己心得吧。
因为项目是用uni-app做的,所以大家参考参考就好。

原因

页面未渲染完成就点击内部或者外部的事件按钮

	// 导致错误的源码
	onLoad() {
		let phone = uni.getStorageSync('phone');
		uni.request({
			url: this.api+'api/info/get_info',
			method: 'POST',
			data: {phone: phone},
			header: {
				'content-type': 'application/x-www-form-urlencoded'
			},
			success: res => {
				this.data = res.data;
			}
		});
	}

深入分析

因为是在页面周期onLoad内出现的错误。因此我判断是由于本地缓存中没有关键词phone,但是程序依然继续向下执行了request请求,从而导致页面渲染缓慢。

解决方法

不说废话,直接上代码,注意看 注释 !!!

	// 导致错误的源码
	onLoad() {
		let phone = uni.getStorageSync('phone');  //本地缓存
		if(!phone) return;  //只需要在这里加一步判断,不存在就返回false即可
		uni.request({
			url: this.api+'api/info/get_info',  //接口
			method: 'POST',
			data: {phone: phone},
			header: {
				'content-type': 'application/x-www-form-urlencoded'
			},
			success: res => {
				this.data = res.data;
			}
		});
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值