瀏覽代碼

Fix infinitely thrown errors when tilesets cannot be loaded

Garrett Johnson 5 年之前
父節點
當前提交
f198018237
共有 2 個文件被更改,包括 21 次插入8 次删除
  1. 14 7
      src/base/TilesRendererBase.js
  2. 7 1
      src/three/DebugTilesRenderer.js

+ 14 - 7
src/base/TilesRendererBase.js

@@ -236,7 +236,7 @@ export class TilesRendererBase {
 
 						} else {
 
-							throw new Error( `Status ${ res.status } (${ res.statusText })` );
+							throw new Error( `TilesRenderer: Failed to load tileset "${ url }" with status ${ res.status } : ${ res.statusText }` );
 
 						}
 
@@ -254,19 +254,26 @@ export class TilesRendererBase {
 
 					} );
 
-			pr.catch( e => {
+			pr.catch( err => {
 
-				console.error( `TilesLoader: Failed to load tile set json "${ url }"` );
-				console.error( e );
-				delete tileSets[ url ];
+				console.error( err );
+				tileSets[ url ] = err;
 
 			} );
 
 			tileSets[ url ] = pr;
 
-		}
+			return pr;
+
+		} else if ( tileSets[ url ] instanceof Error ) {
 
-		return Promise.resolve( tileSets[ url ] );
+			return Promise.reject( tileSets[ url ] );
+
+		} else {
+
+			return Promise.resolve( tileSets[ url ] );
+
+		}
 
 	}
 

+ 7 - 1
src/three/DebugTilesRenderer.js

@@ -68,7 +68,13 @@ export class DebugTilesRenderer extends TilesRenderer {
 	loadTileSet( ...args ) {
 
 		const pr = super.loadTileSet( ...args );
-		pr.then( () => this.initExtremes() );
+		pr
+			.then( () => this.initExtremes() )
+			.catch( () => {
+
+				// error is logged internally
+
+			} );
 
 		return pr;