如何縮短默認超時時間並採取糾正措施?
你不行。它是特定於瀏覽器的,它沒有API。
但是,您可以創建自己的子類L.TileLayer
並添加一些額外的邏輯。看到這些線的L.TileLayer.prototype.createTile
默認實現:
DomEvent.on(tile, 'load', Util.bind(this._tileOnLoad, this, done, tile));
DomEvent.on(tile, 'error', Util.bind(this._tileOnError, this, done, tile));
你可能會引發較短的超時的東西,如:
var loadCallback = Util.bind(this._tileOnLoad, this, done, tile);
var errorCallback = Util.bind(this._tileOnError, this, done, tile);
DomEvent.on(tile, 'load', loadCallback);
DomEvent.on(tile, 'error', errorCallback);
setTimeout(function(){
// Do nothing if the tile has already been loaded successfully
if (tile.loaded) return;
// Prevent any further events from triggering
DomEvent.off(tile, 'load', loadCallback);
DomEvent.off(tile, 'error', errorCallback);
// Trigger the error
errorCallback();
});
有可能是我現在不能預見一些競爭條件,但是這就是大概的概念。
對於讀者:如果你不單獨導入Leaflet類,而是整個UMD包,你應該使用'L.DomEvent','L.Util'等而不是'DomEvent','Util' – ghybs