方法概述
名称 | 返回值类值 | 描述 | 对象 |
---|---|---|---|
Promise | 用于创建和解析 promise 的便利实用程序方法。 更多详情 | promiseUtils | |
Error | 创建一个特殊的错误对象,用于在 promise 链中发出中止请求的信号。 更多详情 | promiseUtils | |
Function | 用于确保输入函数不会在同一时间被调用多次的实用程序。 更多详情 | promiseUtils | |
Promise|Object | 便利的实用程序方法,用于等待许多 promise 解决或拒绝。 更多详情 | promiseUtils | |
Promise | 便利的实用程序方法,用于使用异步谓词函数过滤值数组。 更多详情 | promiseUtils | |
Boolean | 检查提供的错误对象是否是 promise 中止时被拒绝的特殊类型的错误。 更多详情 | promiseUtils |
方法详细说明
-
create(executor){Promise}已弃用从 4.24 版开始。请改为使用 Promise。
-
用于创建和解析 promise 的便利实用程序方法。
参数executor Executor将使用以下两个方法调用的函数:
resolve
和reject
。返回类型 描述 Promise 由执行者来完成的 promise。 示例function fetchImage(url) { return promiseUtils.create(function(resolve, reject){ const image = document.createElement("img"); image.onload = function() { image.load = image.onerror = null; resolve(image); }; image.onerror = function() { image.load = image.onerror = null; reject(new Error("Error while loading the image")); } image.src = url; }); } fetchImage(".........") .then(function(image){ console.log(image); });
// Load multiple modules conditionally require([ "geoscene/core/promiseUtils" ], function( promiseUtils ) { // load modules based on whether a user selects // a UI option to apply class breaks to a layer if (classBreaksSelected) { return promiseUtils.create(function(resolve, reject) { require([ "geoscene/renderers/ClassBreaksRenderer" ], resolve); }).then(function(ClassBreaksRenderer) { // Create renderer and apply it to the desired layer }); } });
-
createAbortError(){Error}
-
创建一个特殊的错误对象,用于在 promise 链中发出中止请求的信号。由于中止信号而被拒绝的 Promises 应拒绝这种错误。
返回类型 描述 Error 一个特殊错误对象,用于发出中止请求的信号。 示例// Request multiple files and return results in an array function requestMultiple(urls, abortSignal) { // Fire off requests let promises = urls.map(url => request(url, { signal: abortSignal }); // Wait until all requests have either resolved or rejected promiseUtils.eachAlways(urls) .then(results => { if (abortSignal && abortSignal.aborted) { // If the user has triggered the abortSignal, all requests will react and reject. eachAlways resolves with // an array that contains the reject error for each request. Instead of returning this array as a result, we // should reject the promise returned to the user with an abort error. throw promiseUtils.createAbortError(); } return results; }); }
-
起始版本:GeoScene Maps SDK for JavaScript 4.12
-
用于确保输入函数不会在同一时间被调用多次的实用程序。这对于高度交互式的应用程序非常有用,例如对鼠标移动或鼠标拖动事件执行统计查询的应用程序。您不必对每个此类事件执行查询,而是可以取消函数执行,直到同一函数调用的前一次执行完成。这提高了此类应用程序的性能和用户体验。
参数callback Function此函数用于防止在执行对同一函数的上一个调用期间执行。这通常是可以在鼠标移动或鼠标拖动事件时调用的函数。
返回类型 描述 Function 与回调具有相同签名的函数。 示例// Queries a layer for the count of features that intersect a // 1 km buffer of the pointer location. The debounce() method // prevents the updateStatistics function from executing before // a previous invocation of the same function finishes. const updateStatistics = promiseUtils.debounce(function (geometry) { return layerView.queryFeatures({ geometry, distance: 1, units: "kilometers", outStatistics: [{ onStatisticField: "*", outStatisticFieldName: "feature_count", statisticType: "count" }] }).then(function(featureSet) { console.log(`Feature Count: ${featureSet.features[0].attributes["feature_count"]}`); }); }); view.on("drag", (event) => updateStatistics(view.toMap(event)));
-
便利的实用程序方法,用于等待许多 promise 解决或拒绝。结果 promise 解析为包含 promise 的结果对象数组,如果 promise 被解析,则解析为一个值,如果 promise 被拒绝,则解析为一个错误。
参数promise 数组,或每个属性都是 promise 的对象。
返回类型 描述 Promise | Object 如果使用 promise 数组调用,则解析为包含原始 promise 的结果对象数组,值 (如果 promise 已解决) 或错误 (如果 promise 被拒绝)。如果使用每个属性都是 promise 的对象调用,则解析为具有相同属性的对象,其中每个属性值都是结果对象。 示例const controller = new AbortController(); // Query for the number of features from // multiple feature layers function queryLayerFeatureCount(whereClauses) { // pass each whereClause item into callback function return promiseUtils.eachAlways(whereClauses.map(function (whereClause) { return layer.queryFeatureCount(whereClause, { signal: controller.signal }); })); } queryLayerFeatureCount(whereClauses).then(function(eachAlwaysResults) { eachAlwaysResults.forEach(function(result) { // If a Promise was rejected, you can check for the rejected error if (result.error) { console.log("There was an error in your query.", result.error); } // The results of the Promise are returned in the value property else { console.log("The number of features are: " + result.value); } }); });
-
filter(input, predicate){Promise}
-
便利的实用程序方法,用于使用异步谓词函数过滤值数组。
参数input Array要过滤的输入值的数组。
predicate FilterPredicateCallback返回 promise 的谓词函数。仅保留返回的 promise 包含
true
的数组条目。返回类型 描述 Promise 包含通过谓词检查的值数组的 promise。
-
isAbortError(error){Boolean}
-
检查提供的错误对象是否是 promise 中止时被拒绝的特殊类型的错误。
参数error Error要测试的错误对象。
返回类型 描述 Boolean true
,如果错误是中止错误,否则为false
。示例// This function fetches a document via HTTP and logs its content to the console once available function logHTTPDocumentToConsole(url, abortSignal) { // Pass the abort signal into `request` to make it cancelable request(url, { signal: abortSignal }) .then((response) => { console.log(response.data); }) .catch((error) => { if (!promiseUtils.isAbortError(error)) { // Only log request failures and ignore cancellations console.error("request error", error); } }); } let controller = new AbortController(); let url = "https://sampleserver6.arcgisonline.com/arcgis/rest/services/Census/MapServer"; logHTTPDocumentToConsole(url, controller.signal); // Cancel the request controller.abort();
类型定义
-
EachAlwaysResult Object
-
传递给 promiseUtils.eachAlways 的 promise 的结果对象。
- 属性
-
promise Promise
已实现的 promise。
value *解析 promise 所使用的值。仅当 promise 解决时才定义。
error *拒绝 promise 所使用的错误。仅当 promise 被拒绝时才定义。
-
Executor(resolve, reject)
-
该函数用于定义如何解决和拒绝在 create() 中创建的 promise。
参数resolve ResolveCallback实现 promise 的函数。
reject RejectCallback处理拒绝 promise 的函数。
-
FilterPredicateCallback(value, index){Promise}
-
为要过滤的数组的每个条目调用的回调。
参数value *数组条目的值。
index Number数组中条目的索引。
返回类型 描述 Promise 解析为布尔值的 promise,用于指示是否应将条目保留在过滤的数组中。
-
RejectCallback(error)
-
此函数将拒绝在 create() 中创建的 promise。
参数error *optional拒绝 promise 所使用的错误。仅当 promise 被拒绝时才定义。