Leo*_*ykh 5 html javascript angularjs
我遇到了一个问题。我有一个input元素和函数来显示“加载”动画。问题是,一旦我放下文件或单击并选择它们,“加载”动画就会显示几秒钟的延迟(多个文件或大文件)。
注意:使用 Angular 2+ 制作的解决方案这就是原因(change)
解决方案一:
HTML:
<input type="file" multiple="true" (change)="uploadImgs($event)"/>
Run Code Online (Sandbox Code Playgroud)
JS:
uploadImgs(event: any) {
console.log('START UPLOAD!')
this.spinnerService.start();
///restOfTheLogic...}
Run Code Online (Sandbox Code Playgroud)
解决方案2:使用onDrop事件触发this.spinnerService.start();显示动画
HTML:
<div (drop)="spinnerService.start();">
<input type="file" multiple="true (change)="uploadImgs($event)"/>
</div>
Run Code Online (Sandbox Code Playgroud)
解决方案 3:触发这两个函数onChange/onDrop
HTML:
<input type="file" multiple="true (change)="spinnerService.start(); uploadImgs($event)"/>
Run Code Online (Sandbox Code Playgroud)
输出:在所有情况下,放置文件后,我都可以console.log('START UPLOAD!')立即在控制台中看到输出,但在动画实际出现之前会出现延迟。
动画功能简单来说:
start() {
document.getElementById('loading').classList.remove('hidden');
Run Code Online (Sandbox Code Playgroud)
}
我试着自己去寻找。但是堆叠为什么第一行console.log立即执行而第二行this.spinnerService.start();延迟执行?在操作 DOM 元素之前是否等待files读取数据或执行其他操作?
有什么想法可以避免这种延迟吗?
| 归档时间: |
|
| 查看次数: |
1810 次 |
| 最近记录: |