ElectronJS中setInterval调用报错求助:无法定时执行指定函数
问题排查:setInterval 回调报错 TypeError [ERR_INVALID_CALLBACK]
问题背景
- 需求:每隔指定时间自动执行
getProducts()和getDatarticulo()两个函数 - 尝试操作:在
ipcMain.handle的'get'处理器中加入setInterval实现定时 - 报错信息:
Error occurred in handler for 'get': TypeError [ERR_INVALID_CALLBACK]: Callback must be a function. Received 'getProducts()'
原因分析
你写错了setInterval的参数传递方式:setInterval的第一个参数要求传入函数引用,但你直接写了getProducts()——这会立刻执行该函数,并把函数的返回值(大概率不是函数类型)传给setInterval,自然触发回调无效的报错。
解决方案
1. 单个函数定时执行
直接传入函数名(不要加括号,加括号会立即执行):
// 每隔5秒执行一次getProducts setInterval(getProducts, 5000); // 每隔5秒执行一次getDatarticulo setInterval(getDatarticulo, 5000);
2. 同时执行两个函数
用箭头函数把两个函数调用包裹起来,作为setInterval的回调:
// 每隔5秒同时执行两个函数 setInterval(() => { getProducts(); getDatarticulo(); }, 5000);
额外注意:清理定时器
如果是在Electron的主进程中设置定时任务,记得在窗口关闭时清理定时器,避免内存泄漏:
// 保存定时器ID const autoFetchTimer = setInterval(() => { getProducts(); getDatarticulo(); }, 5000); // 监听窗口关闭事件,清理定时器 mainWindow.on('closed', () => { clearInterval(autoFetchTimer); });
内容的提问来源于stack exchange,提问作者Francisco S
相关产品推荐
相关产品推荐

