Javascript 异步等待映像加载事件触发器

Javascript 异步等待映像加载事件触发器,javascript,ecmascript-6,async-await,Javascript,Ecmascript 6,Async Await,我有一个奇怪的问题,我想不起来 const load = url => { return new Promise( resolve => { const img = new Image() img.onload = () => resolve({ url, ratio: img.naturalWidth / img.naturalHeight }) img.src = url }) } 如果onload只是一个回调分配,我应该如何使用async

我有一个奇怪的问题,我想不起来

const load = url => {
  return new Promise( resolve => {
    const img = new Image()
    img.onload = () => resolve({ url, ratio: img.naturalWidth / img.naturalHeight })
    img.src = url
  })
}
如果onload只是一个回调分配,我应该如何使用
async/await
。。。我陷入了以下困境:

const load = async url => {

    const img = new Image()
    img.src = url
    return await img.onload = () => ({ url, ratio: img.naturalWidth / img.naturalHeight })

    // cannot use await for img.onload obviously ..
    // nor can I put await in the onload function ... since it's not going to do anything

}

不必使用解析方法就可以进行解析吗

在第二段代码中,我不明白您想做什么,但上面的代码工作得很好,可以这样使用:

const load = url => new Promise( resolve => {
    const img = new Image()
    img.onload = () => resolve({ url, ratio: img.naturalWidth / img.naturalHeight })
    img.src = url
});

(async () => {
    const { url, ratio } = await load("<url>");
    // Do stuff with data.
})();
const load=url=>新承诺(解析=>{
常量img=新图像()
img.onload=()=>resolve({url,比率:img.naturalWidth/img.naturalHeight})
img.src=url
});
(异步()=>{
const{url,ratio}=wait load(“”);
//处理数据。
})();

等待你需要承诺。

嗯。第一个例子看起来很合适。第二个看起来。。。错。可以在异步函数中等待第一个示例。第二个例子似乎误解了async/wait是什么。async/wait并不能取代承诺,它只允许您以不同的方式使用承诺。是的,很抱歉误导您,我知道如何使用它们,只是我不知道在这种情况下如何使用async/wait来取代承诺/解析(回调语法)。我只是想知道,如果一个有更多大脑的人不使用他们也能解决这个问题,你不能。你不能拿着不兑现承诺的东西等待它,它必须已经兑现了承诺。async/await在这种情况下没有帮助。现在我想起来它是有意义的。。我想知道是否有其他人知道或者有办法让承诺变得更容易。谢谢你的澄清,我没有投你反对票,你投反对票似乎很幼稚,这是一个完全正常的问题。这是我送的那又怎样?我没有否决你的问题。考虑到你的问题只有一票否决票,我可以向你保证,截至目前,这个回答者没有否决你的问题。