时雨行 2021-08-01 16:14 采纳率: 42.9%
浏览 1035

在js中如何在img.onload执行完毕后在执行其他方法

在函数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
                            }
                        })
                }

  • 写回答

2条回答 默认 最新

  • CSDN专家-Time 2021-08-01 16:16
    关注

    你在onload函数里调用函数就可以了。
    建议给出更具体的函数内容。你给的这个if 看不出什么猫腻的。

    评论

报告相同问题?

问题事件

  • 创建了问题 8月1日

悬赏问题

  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用
  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?