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,哦,我只是记录它以检查函数返回的内容。