关于img.onload如何先执行的问题

发布于 2022-09-13 00:51:30 字数 1167 浏览 14 评论 0

在函数draw()中我用for循环中的if来判断里面是否有图片,再在if里面通过img.onload获取图片的高度,将他加到总高度上面,之后for循环结束,我在将总高度赋值给一个创建的div,之后return这个div。

本来我想的是在for循环之后写一个计时器来卡住函数的运行,当判断onload执行完毕之后在执行之后创建赋值的程序,但是当我把后面创建div和赋值的程序放到计时器里面的时候,drawreturn就会出错,之后我又将draw写成了async 在img.onload外面写了个await promise来将它包裹住,但是这样的话return的是一个promise,而不是这个div

我在这里想问两个问题
1.如果我用计时器的话我如何让return返回的数据正确
2.如果我用的是async的方法的话,我又该如何return正确的数据呢

这个是我await的写法

                if (answer_img.length === 1) {
                        answer_height -= this.subject_row_height
                        let img = new Image()
                        img.src = answer_img[0].src
                        await new Promise(resolve => {
                            img.onload = function () {
                                img_number--
                                img_height += img.height
                                answer_height += img.height
                            }
                        })
                }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文