快出海  > AppGallery  >  AppGallery Connect:如何解决快应用堆栈溢出问题

AppGallery Connect:如何解决快应用堆栈溢出问题

作者:Mayism
时间:2021-01-21

sigmund-UmaojK7erQo-unsplash.jpg

现象描述

已知将通过 $element('id') 获取到内容,赋值给成员变量,可能会引发堆栈溢出(RangeError: Maximum call stack size exceeded),从而导致程序崩溃;同时,页面 DOM 存在成员变量(如 A )的引用,当该变量 A 发生变化时,即会引发堆栈溢出报错问题,示例代码如下:

<template>

  <div id="content">

    <input type="button" @click="onTestClick" value="会引发堆栈溢出"/>

    <text>{{ stateText }}</text>

  </div>

</template>

<script>

  export default {

    private: {

      mContentNode: null,

      stateText: 'init state'

    },

    onReady() {

      /* 如将 $element('id')获取到内容,赋值给成员变量,则有可能引发堆栈溢出 */

      this.mContentNode = this.$element('content')

    },

    onTestClick() {

      /* 页面 DOM 存在成员变量的引用,当发生变化时,即是引发如上所述的一种必现方式 */

      this.stateText = 'new state'

    }

  }

</script>

这是因为赋值为 vm 属性,会触发大规模的数据驱动变化,导致内部出现异常循环,从而引发堆栈溢出报错。

解决方法

只要不将 $element('id') 获取到内容,赋值给成员变量,即可规避堆栈溢出问题;可以将其赋值给局部变量,或页面全局变量,示例代码如下:

<script>

  let $gContentNode = null

  export default {

    private: {

      stateText: 'init state'

    },

    onReady() {

      /* 如将 $element('id')获取到内容,赋值给局部变量,或页面全局变量,则可规避堆栈溢出问题 */

      const cContentNode = this.$element('content')

      $gContentNode = this.$element('content')

    },

    onTestClick() {

      this.stateText = 'new state'

    }

  }

</script>

版权说明

本文内容来自于华为开发者论坛,本站不拥有所有权,不承担相关法律责任。文章内容系作者个人观点,不代表快出海对观点赞同或支持。如有侵权,请联系管理员(hj@kchuhai.com)删除!

相关文章
AppGallery Connect:启动华为游戏,提示更新HMS Core,点击更新,提示“暂时无法更新,请稍后再试(102)”
AppGallery Connect:启动华为游戏,提示更新HMS Core,点击更新,提示“暂时无法更新,请稍后再试(102)”
我们是Android Studio开发环境, Maven仓集成方式集成的华为HMS SDK,接好之后在华为手机上(手机上安装的是低版本的HMS Core)测试,启动游戏后弹出提示要更新安装华为移动服务,点击同意,提示“暂时无法更新,请稍后再试(102)”。
7天前
AppGallery Connect:快应用报表数据显示空白
AppGallery Connect:快应用报表数据显示空白
快应用在华为上架一段时间了,所以想了解一下快应用使用情况,于是去华为AGC网站查看报表数据,但是快应用用户报表和快应用运行报表数据显示空白。
7天前
AppGallery Connect:手把手教你如何快速构建应用内消息推送与运营能力
AppGallery Connect:手把手教你如何快速构建应用内消息推送与运营能力
自行搭建消息推送平台成本太高,为了降低开发成本,由第三方平台推送,依然存在安全风险,怎么办?为了保证用户体验和运营效果,部分平台需要应用开发者协同进行UI、统计等相关的功能开发,操作过程复杂,怎么办?
2021-02-24
AppGallery Connect配置函数简介
AppGallery Connect配置函数简介
函数配置界面包含基本信息、部署信息、函数代码、环境变量等区域。
2021-02-23
AppGallery Connect:内容推荐常见问题解答
AppGallery Connect:内容推荐常见问题解答
如何找到“Indexing”入口?通过AGC后台录入后,审核通过了,为什么内容专区未显示内容?
2021-02-23
服务商推荐 更多 >
百度国际MediaGo
百度国际MediaGo
百度国际是百度极具战略意义的海外业务发展部门,拥有超过10年的出海经验。旗下出海营销平台MediaGo旨在为全球广告主提供营销整合方案。成立以来,MediaGo不断进化,在磨炼一站式海外营销服务能力的同时,连接Snapchat、Pinterest、Reddit等优质海外平台,成为连接广告主与价值洼地的桥梁。
本地化变现推广
北京云中融信网络科技有限公司
融云
融云为全球开发者和企业提供 IM即时通讯和实时音视频通信云服务,独立的海外数据中心,全球 30 万+应用的通信选择。一套 SDK 解决所有通信场景,快速集成,1天实现跨国互动,实时沟通,助力应用出海
云服务
深圳哈希信息技术有限公司
哈希信息
深圳哈希信息技术有限公司成立于2018年,是国内领先的智能网络服务提供商,基于软件定义网络、下一代网络协议、大数据等技术研发面向不同行业领域的产品和解决方案,秉着“专业、创新、信任、分享“的核心价值观,致力为客户提供一个高效可靠的流量云平台。公司对外提供分发云(CDN)、加速云(动态加速)、安全云(防DDOS&云WAF)、流量云(广告交易)、边缘云、短信云等多个云产品,帮助游戏/资讯等互联网公司构建、加速和更好的保护核心业务。
云服务变现
太平洋电信股份有限公司
太平洋电信
太平洋电信为游戏、电商等客户提供低延时、高可靠的多点互联、企业上云、全球移动应用测试、主机托管等服务。通过与澳大利亚电信合作,凭借在全球丰富的海缆网络资源及多年的国际化运营经验,助力企业业务出海布局。 更多产品详情,请访问官方网站:https:www.t-pbs.com
云服务
杭州云片网络科技有限公司
云片
云片自2013年成立以来,深耕云通讯领域,致力于革新企业与用户间的沟通方式,成为国内领先的云通讯服务商。云片目前已支持短信、国际短信、超级短信、营销云、身份认证等产品服务,帮助企业了解客户,获取客户,提升客户体验,为企业提供持续增长动力。在国际服务方面,支持【全球语音验证码】、【国际短信验证码】和【国际营销彩信】
云服务
奇亿音乐
奇亿音乐
奇亿音乐为各类型国内外游戏提供:游戏音乐、游戏音效、游戏配音等资源制作。配音方面语种齐全,除了游戏中常见的英语,还可以录制阿语、日语、韩语、法语、西班牙语、德语、意大利语…….等几十种语言,还可录制各地方言。
本地化
小程序
公众号
商务合作
投稿采访
出海管家