RequestScheduler
是CesiumJS中一个用于调度网络资源请求的类。它的主要作用是帮助在不同的实体(例如各种图层、模型、场景)中协调好它们的资源请求,让它们能够在获得合适的网络负载下尽可能地得到数据,以达到最佳的用户体验。
RequestScheduler(throttleRequests : Boolean = true, requestBatchSize : Number = 50, maximumRequestsAtOnce : Number = 6, minimumRequestsPerServer : Number = 3, maximumRequestsPerServer : Number = 6, preferLeasing : Boolean = true, categoryTable : Object = {})
throttleRequests
: 是否需要限制请求数,默认为true
,即在排队请求时,根据内部算法将请求限制到特定数量,默认值为100个;requestBatchSize
: 批量请求的数量,默认为50个,当到达这个数量时才会立即请求;maximumRequestsAtOnce
: 控制同时能够被执行的请求数量,默认为6个;minimumRequestsPerServer
: 每个服务器的最小请求数量,默认为3个;maximumRequestsPerServer
: 每个服务器的最大请求数量,默认为6个;preferLeasing
: 是否尽可能多地使用租约请求资源,默认为true;categoryTable
: 控制将请求分组的选项,按类别(例如image、terrain、model等)分类,默认为空对象;numberOfActiveRequests
: 目前正在执行中的请求数量;maximumRequestsAtOnce
: 同时能够被执行的最大请求数量;requestsInProgress
: 正在执行中的请求数组;statisticsByServer
: 执行该调度器的服务器的数量信息;statiscticsWaiting
: 等待响应的请求数量。update()
: 调用此函数以便控制请求数量;clearForServer(server : String, cancelCallback : Function)
: 如果当前服务器数量过多,则取消当前正在请求中的资源,并终止后续的请求数量请求;clearAllRequests(cancelCallback : Function)
: 取消所有当前正在请求的资源;destroy()
: 删除当前RequestScheduler
的实例,并且移除内存中的所有数据。在CesiumJS中,有一些图层和模型可以直接使用RequestScheduler
这个类。例如:
let terrainProvider = new Cesium.CesiumTerrainProvider({
url : '//assets.agi.com/stk-terrain/world',
requestVertexNormals : true
});
在这个地形提供器中,由于使用了RequestScheduler
这个类,因此地形数据的请求就可以得到有效控制。