如何在外部调用async函数里的数据
我代码是一个函数,里面有个for循环,完了在一个if判断是否有图片,之后在if里获取图片的高,之后把图片的高度加到总高度上,因为用到了onload,所以写了个async语句把if里的东西包裹了起来,但是我在async外面调用总高度依旧是没有添加图片高度
async function getImgHeight() {
const img = new Image()
img.src = answer_img[0].src
await new Promise(resolve => {
img.onload = async function () {
img_number--
img_height += img.height
answer_height += img.height
}
})
}
getImgHeight()
console.log(answer_height,img_height)
我这个console出来的总高度为没有添加图片高度,图片高度img—height
为在for循环外面初始化的0,想问问这个该如何解决呢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这样做是因为 JS 不允许穿越时空,加载图片这事就像煮鸡蛋,你不能一下锅就捞出来,所以你得
await
。并且
await
是一个全新的功能,在没有这种功能之前,你只能把鸡蛋下锅的同时,在上面贴一个便利贴,提醒之后的自己,要拿熟鸡蛋干什么。注意
await
之咒只在async
函数体和全局async
环境下使用,且只能冻结其所在的函数体,对这个函数体外的时空而言,冻结的时空是一个遥遥无期的承诺,终其一生也看不到承诺兑现之日——除非把外面的时空也冻结了。