记一次item.resume 断点续传可能引发的内存泄漏现象

本文探讨了在使用Electron框架开发应用时,断点续传功能可能导致的内存泄漏问题。具体分析了在下载任务中断后尝试自动恢复下载过程中出现的潜在无限循环问题,并提出了解决方案。

记一次 item.resume 断点续传可能引起的内存泄漏问题

mainWindow.webContents.session.on(
    'will-download',
    (event, item, webContents) => {
      let value = 0;
      item.on('updated', (event, state) => {
        if (state === 'progressing') {
          if (item.getReceivedBytes() && item.getTotalBytes()) {
            value = parseInt(
              (item.getReceivedBytes() / item.getTotalBytes()) * 100
            );
            mainWindow.webContents.send('updateProgressing', value);
          }
         
        } else if (state === 'interrupted') {
          //sendLogToRender('info', `Download is interrupted but can be resumed`);
          //是否可恢复下载
          // if (item.canResume) {
          //   item.resume();
          // }
        } 
      });
      item.once('done', (event, state) => {
        if (state === 'completed') {         
        } else if ('interrupted' === state) {          
        } else {
          mainWindow.webContents.send('updateProgressing', value, 'fail');
        }
      });
    }
  );

上面注释部分可以实现断点续传功能,在 updated 回调中如果状态是 interrupted 此时的下载状态是可以被恢复的,方法是:" item.resume ( ) "

但是这儿地方不能写这个语句,原因是,加入你的下载出问题,比如下载路径不正确,可能会导致不停的断点续传,然后‘死循环’,导致内存泄的问题,千万要注意

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值