以下代码更新一些数据,重新获取数据,然后等待加载图像字段:
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
会引发Maximum Call Stack Size Exceeded
。
为什么会这样?
修改
result.data
看起来像这样:
{
app: "http://ac-0uhksb6K.clouddn.com/370b989e0ceec6329fb6.jpg? imageView/2/w/4096/h/2048/q/100/format/png"
categoryType : "livingroom"
web: "http://ac-0uhksb6K.clouddn.com/370b989e0ceec6329fb6.jpg?imageView/2/w/4096/h/2048/q/100/format/png"
}
答案 0 :(得分:2)
原因很简单。您在没有任何中断条件的情况下以递归方式调用image.onload()
。因此,连续调用方法直到达到调用堆栈限制。
问题陈述是
console.log('LOADED:', image.onload()); //<==========
答案 1 :(得分:2)
因为您在image.onload()
函数中调用了console.log
,因此创建了一个递归。您可能希望将日志更改为以下内容:
image.onload = () => {
console.log('LOADED:', image.src);
}