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在这种情况下没有帮助。现在我想起来它是有意义的。。我想知道是否有其他人知道或者有办法让承诺变得更容易。谢谢你的澄清,我没有投你反对票,你投反对票似乎很幼稚,这是一个完全正常的问题。这是我送的那又怎样?我没有否决你的问题。考虑到你的问题只有一票否决票,我可以向你保证,截至目前,这个回答者没有否决你的问题。