使用 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);
}
})();