RequestState
是 CesiumJS 中用于管理异步网络请求状态的对象。
当我们向远程服务器请求数据时,无法立即获得数据。因此,我们通常会在发起请求后等待数据的到来。这样的等待可能是无限期的,因为网络常常不稳定。在这种情况下,我们必须在用户界面中显示某些反馈,以告知用户正在等待数据。RequestState
提供了一种管理此类反馈的方法。
RequestState
封装了网络交互的一般状态,提供了如下信息:
当我们发出请求时,我们可以将一个 RequestState
对象传递给 Cesium.Resource
的 request
方法。RequestState
内部将跟踪请求的状态,并根据请求状态的变化更新用户界面。
// 创建一个新的 RequestState 对象
const requestState = new Cesium.RequestState();
// 获取该请求状态是否已获得
const isUnfetched = requestState.isUnfetched;
// 获取该请求状态是否已开始
const isLoading = requestState.isLoading;
// 获取该请求状态是否已成功获取数据
const isComplete = requestState.isComplete;
// 获取该请求状态是否已发生错误
const isError = requestState.isError;
// 根据请求的状态,更新相应的用户界面
requestState.addEventListener(function(status) {
console.log('请求状态已更新');
if (status === Cesium.RequestStatus.BEGIN) {
console.log('请求已开始');
} else if (status === Cesium.RequestStatus.LOADING) {
console.log('正在加载数据...');
} else if (status === Cesium.RequestStatus.ERROR) {
console.log('请求发生错误');
} else if (status === Cesium.RequestStatus.COMPLETE) {
console.log('成功获取数据');
}
});
// 最后,执行请求
const resource = new Cesium.Resource({
url: '//localhost:8080/data',
});
requestState.executeRequest(function() {
return resource.fetchJson();
});
创建一个新的 RequestState
实例。
参数:
{RequestStateProperties} [properties]
- 可选,需设置的属性对象。属性:
{Number} [status=Cesium.RequestStatus.UNFETCHED]
- 请求状态。
可选值包括:
Cesium.RequestStatus.UNFETCHED
- 数据尚未被请求。
Cesium.RequestStatus.BEGIN
- 请求已开始。
Cesium.RequestStatus.LOADING
- 正在加载数据。
Cesium.RequestStatus.ERROR
- 请求发生错误。
Cesium.RequestStatus.COMPLETE
- 已成功获取数据。
{Boolean} [isLoading=false]
- 请求是否正在加载数据。
{Boolean} [isComplete=false]
- 请求是否已成功获取数据。
{Boolean} [isError=false]
- 请求是否已发生错误。
{Boolean} [isUnfetched=true]
- 请求是否尚未被执行。
事件:
{Event} statusChanged
- 请求状态发生变化时触发,参数为当前状态。添加一个监听器,每当请求状态发生变化时触发。回调函数的参数为当前请求状态。
参数:
{Function} callback
- 回调函数。
{Object} [scope]
- 回调函数的作用域。
移除一个监听器。
参数:
{Function} callback
- 需移除的回调函数。
{Object} [scope]
- 回调函数的作用域。
执行一个请求操作。
参数:
{Function} func
- 执行请求的函数。
{String} [name]
- 请求的名字。
一个对象,用于创建 RequestState
的可选属性。
属性:
{Number} [status=Cesium.RequestStatus.UNFETCHED]
- 请求状态。
{Boolean} [isLoading=false]
- 请求是否正在加载数据。
{Boolean} [isComplete=false]
- 请求是否已成功获取数据。
{Boolean} [isError=false]
- 请求是否已发生错误。
{Boolean} [isUnfetched=true]
- 请求是否尚未被执行。