使用 ES2017 asyncawait
上面的相同示例, Image 加载 ,可以使用异步函数编写。这也允许使用常见的 try/catch
方法进行异常处理。
注意: 截至 2017 年 4 月,所有浏览器的当前版本,但 Internet Explorer 支持异步功能 。
function loadImage(url) {
return new Promise((resolve, reject) => {
const img = new Image();
img.addEventListener('load', () => resolve(img));
img.addEventListener('error', () => {
reject(new Error(`Failed to load ${url}`));
});
img.src = url;
});
}
(async () => {
// load /image.png and append to #image-holder, otherwise throw error
try {
let img = await loadImage('http://example.com/image.png');
document.getElementById('image-holder').appendChild(img);
}
catch (error) {
console.error(error);
}
})();