关于“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;
			}
		});
	}
Logo

Agent 垂直技术社区,欢迎活跃、内容共建,欢迎商务合作。wx: diudiu5555

更多推荐