onload、onerror与onloadend事件的触发顺序是否有明确规定?
FileReader/XMLHttpRequest中onload/onerror与onloadend的触发顺序说明
- 触发顺序是完全确定的:onload或onerror一定会先于onloadend执行,不存在随机触发的情况。
- 这类API的事件触发逻辑是标准化的:
- 当操作成功完成时,先触发
onload,随后触发onloadend - 当操作失败时,先触发
onerror,随后触发onloadend
- 当操作成功完成时,先触发
你完全可以把onloadend看作Promise里finally语句的等价物——不管操作最终是成功还是失败,onloadend都会执行,非常适合用来做统一的收尾工作,比如隐藏加载状态、清理临时数据、释放占用的资源等。
举个实际的FileReader示例:
const reader = new FileReader(); reader.onload = () => { console.log('文件读取成功'); }; reader.onerror = () => { console.log('文件读取失败'); }; reader.onloadend = () => { console.log('读取流程结束(成功失败都会走到这)'); }; // 开始读取文件 reader.readAsText(yourFile);
内容的提问来源于stack exchange,提问作者maja
相关产品推荐
相关产品推荐

