You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 07:27:06