为什么这样调用图片加载,promise 内部的后续代码不会执行了?

作者站长头像
站长
· 阅读数 21

jsbin - link - demo

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>promise-load</title>
</head>

<body>

    <script>

        function loadImageAsync(url) {
            return new Promise((resolve, reject) => {
                let img = new Image()
                img.src = url
                img.onload(()=>resolve(img))
                img.onerror(()=>reject())
                console.log(3);
            })
        }
        loadImageAsync('https://avatarsabc.githubusercontent.com/u/54520846?s=400&u=5220402538d51b3c67cf208ea16f93cb218fe4d2&v=4').then((imgDom) => {
            console.log('success');
            document.body.appendChild(imgDom)
        }).catch(() => {
            console.log('error-Load');
        })

    </script>
</body>

</html>

为什么console.log(3) 没有执行

回复
1个回答
avatar
test
2024-06-27

onload is not function? 报错了吧。

正确的应该是


img.onload = (()=>resolve(img))
img.onerror = (()=>reject())
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容