@@ -1435,8 +1435,25 @@ define([
1435
1435
1436
1436
++ statistics . numberOfPendingRequests ;
1437
1437
1438
+ var removeFunction = removeFromProcessingQueue ( tileset , tile ) ;
1438
1439
tile . contentReadyToProcessPromise . then ( addToProcessingQueue ( tileset , tile ) ) ;
1439
- tile . contentReadyPromise . then ( handleTileSuccess ( tileset , tile ) ) . otherwise ( handleTileFailure ( tileset , tile ) ) ;
1440
+ tile . contentReadyPromise . then ( function ( ) {
1441
+ removeFunction ( ) ;
1442
+ tileset . tileLoad . raiseEvent ( tile ) ;
1443
+ } ) . otherwise ( function ( error ) {
1444
+ removeFunction ( ) ;
1445
+ var url = tile . _contentResource . url ;
1446
+ var message = defined ( error . message ) ? error . message : error . toString ( ) ;
1447
+ if ( tileset . tileFailed . numberOfListeners > 0 ) {
1448
+ tileset . tileFailed . raiseEvent ( {
1449
+ url : url ,
1450
+ message : message
1451
+ } ) ;
1452
+ } else {
1453
+ console . log ( 'A 3D tile failed to load: ' + url ) ;
1454
+ console . log ( 'Error: ' + message ) ;
1455
+ }
1456
+ } ) ;
1440
1457
}
1441
1458
1442
1459
function requestTiles ( tileset , outOfCore ) {
@@ -1459,32 +1476,15 @@ define([
1459
1476
} ;
1460
1477
}
1461
1478
1462
- function handleTileFailure ( tileset , tile ) {
1463
- return function ( error ) {
1464
- if ( tileset . _processingQueue . indexOf ( tile ) >= 0 ) {
1465
- // Failed during processing
1466
- -- tileset . _statistics . numberOfTilesProcessing ;
1467
- } else {
1468
- // Failed when making request
1479
+ function removeFromProcessingQueue ( tileset , tile ) {
1480
+ return function ( ) {
1481
+ if ( tile . _contentState === Cesium3DTileContentState . FAILED ) {
1482
+ // Not in processing queue
1483
+ // For example, when a url request fails and the ready promise is rejected
1469
1484
-- tileset . _statistics . numberOfPendingRequests ;
1485
+ return ;
1470
1486
}
1471
1487
1472
- var url = tile . _contentResource . url ;
1473
- var message = defined ( error . message ) ? error . message : error . toString ( ) ;
1474
- if ( tileset . tileFailed . numberOfListeners > 0 ) {
1475
- tileset . tileFailed . raiseEvent ( {
1476
- url : url ,
1477
- message : message
1478
- } ) ;
1479
- } else {
1480
- console . log ( 'A 3D tile failed to load: ' + url ) ;
1481
- console . log ( 'Error: ' + message ) ;
1482
- }
1483
- } ;
1484
- }
1485
-
1486
- function handleTileSuccess ( tileset , tile ) {
1487
- return function ( ) {
1488
1488
-- tileset . _statistics . numberOfTilesProcessing ;
1489
1489
1490
1490
if ( tile . hasRenderableContent ) {
@@ -1498,8 +1498,6 @@ define([
1498
1498
tile . replacementNode = tileset . _replacementList . add ( tile ) ;
1499
1499
}
1500
1500
}
1501
-
1502
- tileset . tileLoad . raiseEvent ( tile ) ;
1503
1501
} ;
1504
1502
}
1505
1503
0 commit comments