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

使用setInterval调用方法时提示this.createMapXML不是函数的问题

问题原因

该报错的核心是setInterval回调的this指向丢失:

  • 手动调用uploadToDataBase时,this绑定的是当前类实例,实例上存在createMapXML方法,所以运行正常。
  • 将this.uploadToDataBase直接作为参数传入setInterval后,函数脱离了原类实例的执行上下文,运行时this会指向全局对象(浏览器环境为window,Node环境为globalThis),全局对象上没有createMapXML方法,因此抛出类型错误。
解决方法

以下三种方案任选其一即可:

  1. 箭头函数包裹回调
    箭头函数会继承外层作用域的this,可保留类实例的上下文:
startautoSave(){
  setInterval(() => this.uploadToDataBase(), 600000)
};
  1. 使用bind显式绑定this
    通过bind方法将uploadToDataBase的执行上下文永久绑定到当前类实例:
startautoSave(){
  setInterval(this.uploadToDataBase.bind(this), 600000)
};
  1. 将类方法定义为箭头函数
    修改uploadToDataBase的定义方式,使其内部的this永远指向类实例,原startautoSave代码无需改动:
uploadToDataBase = () => {
  this.toUploadMap.xml = this.createMapXML();
  // 其余逻辑不变
}

内容的提问来源于stack exchange,提问作者Zerox

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 19:09:01