收藏
回答

AudioContext的事件挂载触发nodejs的EventEmitter上限

如题,当使用AudioContext的onXXX挂载事件处理器的时候,由于目前的机制只提供挂载,不提供反挂载,所以如果重复调用某个onXXX挂载处理器,会触发以下的报警信息(可能会导致内存泄漏)


WAService.js:4 (node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit.


测试代码

let ctx = wx.createInnerAudioContext();

ctx.onCanplay(() => {});

....  // 重复9次

ctx.onCanplay(() => {});    // 这里会出现上面的warning


希望可以提供取消挂载事件的接口让我们可以清理不必要的事件,以达到重用实例的目的,不然每次播放新的音频,都只能创建一个新的实例,并且播放完成后都只能销毁实例,因为不知道这个逻辑重不重io,所以担心效率比较低

回答关注问题邀请回答
收藏

11 个回答

  • 小程序/小游戏开发-Link
    小程序/小游戏开发-Link
    2018-04-13

    1.9.0 版本开始,InnerAudioContext 新增了 off* 方法,用于取消监听事件,详见 文档

    2018-04-13
    有用
    回复 1
    • 2018-05-16
      请问video有相关日程吗?
      2018-05-16
      回复
  • 小程序/小游戏开发-Link
    小程序/小游戏开发-Link
    2017-12-11

    你好,你的反馈我们已收到,我们会在后续的版本中增加此功能。

    2017-12-11
    有用
    回复
  • Walker
    Walker
    2018-03-22

    createVideoContext也有这问题  希望提供相应destroy方法

    2018-03-22
    有用 2
    回复
  • 黄豆芽🔫
    黄豆芽🔫
    2018-09-28

    2018年9月28日,请问一下video的事件未销毁问题解决了吗?

    2018-09-28
    有用
    回复
  • 尉家赫
    尉家赫
    2018-04-12

    2018年4月12日,官方还没有解决这个问题~~!!

    2018-04-12
    有用
    回复
  • 冉啟皓
    冉啟皓
    2018-03-17

    this.createIntersectionObserver();在自定义组件里面,调用多次后也会报这个异常

    2018-03-17
    有用
    回复
  • 🐳
    🐳
    2018-03-01

    2018年3月1日,官方还没有解决这个问题~~!!

    2018-03-01
    有用
    回复
  • z࿆gshen
    z࿆gshen
    2018-01-11

    2018年1月11日,官方还没有解决这个问题~~!!

    2018-01-11
    有用
    回复
  • 招财猫🐱
    招财猫🐱
    2017-12-11

    还好还没用video = =b

    2017-12-11
    有用
    回复
  • 漫无止境
    漫无止境
    2017-12-11

    贴条:createVideoContext调用9次也会有这个问题,而且createVideoContext还没有destroy方法。

    2017-12-11
    有用
    回复

正在加载...

登录 后发表内容