如何让事件回调变为同步事件

59 阅读1分钟

背景

在获取图片的base64后才能做后面的操作,但逻辑又不想写到回调里面

  1. 编写一个让promise包裹的事件回调并resolve出结果
function getImage(url){ 
            const image=new window.image()
            if(/^http/.test(url)){ 
                image.setAttribute('crossOrigin','anonymous') 
            } 
            image.src=url 
            return new Promise((resolve,reject)=>{
                image.onload=function (){ return resolve(image) } 
                image.error=function (){ return resolve(null) } 
                }) 
            }   

2:调用

    async run(url){
        const imgDom = await getImage(url)
        console.log(imgDom)
    }
    run(srcPath)