Javascript 为什么会抛出下面的image.onload:";超过最大调用堆栈大小“;?

Javascript 为什么会抛出下面的image.onload:";超过最大调用堆栈大小“;?,javascript,Javascript,以下代码更新一些数据,重新蚀刻数据,然后等待加载图像字段: api.updateBuildings(payload).then(result => { this.fetchBuildings(() => { const image = new Image() image.src = result.data.web this.setIsLoading(false) image.onload = () => { console.log

以下代码更新一些数据,重新蚀刻数据,然后等待加载图像字段:

api.updateBuildings(payload).then(result => {
  this.fetchBuildings(() => {
    const image = new Image()
    image.src = result.data.web
    this.setIsLoading(false)
    image.onload = () => {
      console.log('LOADED:', image.onload())
    }
  })
})
但是,
image.onload
抛出
超过最大调用堆栈大小

为什么会这样

编辑:

result.data
如下所示:

 image.onload = () => {
      console.log('LOADED:', image.src);
 }
{
应用程序:“http://ac-0uhksb6K.clouddn.com/370b989e0ceec6329fb6.jpg?  imageView/2/w/4096/h/2048/q/100/format/png”
类别类型:“客厅”
网络:http://ac-0uhksb6K.clouddn.com/370b989e0ceec6329fb6.jpg?imageView/2/w/4096/h/2048/q/100/format/png"

}原因很简单。您正在递归调用
image.onload()
,没有任何中断条件。因此,方法会一直被调用,直到达到调用堆栈限制为止

问题陈述是

console.log('LOADED:', image.onload()); //<========== 

console.log('LOADED:',image.onload())// 原因很简单。您正在递归调用
image.onload()
,没有任何中断条件。因此,方法会一直被调用,直到达到调用堆栈限制为止

问题陈述是

console.log('LOADED:', image.onload()); //<========== 

console.log('LOADED:',image.onload())// 因为您在
console.log
函数中调用了
image.onload()
,从而创建了一个递归。您可能希望将日志更改为以下内容:

 image.onload = () => {
      console.log('LOADED:', image.src);
 }

因为您在
console.log
函数中调用了
image.onload()
,从而创建了一个递归。您可能希望将日志更改为以下内容:

 image.onload = () => {
      console.log('LOADED:', image.src);
 }

为什么要递归调用
image.onload()
?那也没有中断condition@Satpal-这是答案,不是注释…@Satpal,哦,我只是记录它以检查函数返回的内容。为什么要递归调用
image.onload()
?那也没有中断condition@Satpal-这是答案,不是评论…@Satpal,哦,我只是记录它以检查函数返回的内容。