浏览代码

FileLoader: Incorrect error handling. (#22925)

* fix. FileLoader not showing correct error message when onLoad throws error

* fix. FileLoader not showing correct error message when onLoad throws error (code style fix)

* fix. call itemError before throwing err

* fix. move itemEnd into finally callback
Yiang 3 年之前
父节点
当前提交
f2f55ddf79
共有 1 个文件被更改,包括 13 次插入2 次删除
  1. 13 2
      src/loaders/FileLoader.js

+ 13 - 2
src/loaders/FileLoader.js

@@ -188,14 +188,21 @@ class FileLoader extends Loader {
 
 				}
 
-				this.manager.itemEnd( url );
-
 			} )
 			.catch( err => {
 
 				// Abort errors and other errors are handled the same
 
 				const callbacks = loading[ url ];
+
+				if ( callbacks === undefined ) {
+
+					// When onLoad was called and url was deleted in `loading`
+					this.manager.itemError( url );
+					throw err;
+
+				}
+
 				delete loading[ url ];
 
 				for ( let i = 0, il = callbacks.length; i < il; i ++ ) {
@@ -206,6 +213,10 @@ class FileLoader extends Loader {
 				}
 
 				this.manager.itemError( url );
+
+			} )
+			.finally( () => {
+
 				this.manager.itemEnd( url );
 
 			} );