如何在电子中删除 webRequest.onCompleted 监听器

问题描述 投票:0回答:1

我不明白如何在不再需要时从 webRequest.onCompleted 中删除侦听器。

就我而言,我正在尝试在主进程中创建一个函数,该函数可以被调用一次并从请求中的 url 检索值,然后返回它,并且我需要删除此侦听器,因为我不再需要它。让我在某些情况下创建错误消息。

这是我在主流程中的函数。

ipcMain.on('retrive-string', (_event, sessionId) => {
    const filter = {
      urls: ['https://google.com/api/*']
    }

    session.fromPartition('persist:' + sessionId).webRequest.onCompleted(filter, (details) => {
      mainWindow.webContents.send('string-id', details.url.split('#')[1])
    })
    
  })

我尝试使用removeListener和removeAllListener,但监听器一直在监听。

electron listener webrequest
1个回答
0
投票

我终于找到了解决方案,文档里写得很好哈哈

传递 null 作为侦听器将取消订阅该事件。

因此只需调用相同的 webRequest 方法并传递 null 值即可。

ipcMain.on('retrive-string', (_event, sessionId) => {
  const filter = {
    urls: ['https://google.com/api/*']
  }

  session.fromPartition('persist:' + sessionId).webRequest.onCompleted(filter, (details) => {
    mainWindow.webContents.send('string-id', details.url.split('#')[1])
    session.fromPartition('persist:' + sessionId).webRequest.onCompleted(null)
  })
  
})
© www.soinside.com 2019 - 2024. All rights reserved.