我不明白如何在不再需要时从 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,但监听器一直在监听。
我终于找到了解决方案,文档里写得很好哈哈
传递 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)
})
})