當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


JavaScript ArcGIS config.BeforeInterceptorCallback用法及代碼示例


基本信息

以下是所在類或對象的基本信息。

AMD: require(["esri/config"], (esriConfig) => { /* code goes here */ });

ESM: import esriConfig from "@arcgis/core/config";

對象: esri/config

自從:用於 JavaScript 4.0 的 ArcGIS API

用法說明

config.BeforeInterceptorCallback函數(或屬性)的定義如下:

BeforeInterceptorCallback (params) {Object}


在發送請求之前更改請求 URL 或選項。返回值將用作響應數據,這將阻止發送請求。

如果返回nullundefined,則發送請求時對參數所做的任何更改。如果返回錯誤,則請求將被拒絕並返回 esriError 。如果返回任何其他類型,則將請求解析為返回值為response data(不會發送請求)。

參數:

規格:
類型說明
params Object

參數對象,指定可以設置的兩個屬性。

規格:
url

String

請求 URL。

requestOptions

request.RequestOptions

用戶在數據請求中指定的選項。有關可用屬性,請參閱RequestOptions

返回:

類型 說明
Object 返回:nullundefinedErrorresponse data,或解析為這些對象類型中的任何一種的 Promise

例子:

// modifying the query parameters
const featureLayerUrl = "https://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer/0";

esriConfig.request.interceptors.push({
  // set the `urls` property to the URL of the FeatureLayer so that this
  // interceptor only applies to requests made to the FeatureLayer URL
  urls: featureLayerUrl,
  // use the BeforeInterceptorCallback to check if the query of the
  // FeatureLayer has a maxAllowableOffset property set.
  // if so, then set the maxAllowableOffset to 0
  before: function(params) {
    if (params.requestOptions.query.maxAllowableOffset) {
      params.requestOptions.query.maxAllowableOffset = 0;
    }
  }
});
// fetching the data in place of the requests
const wmsLayerUrl = "https://sampleserver6.arcgisonline.com/arcgis/services/911CallsHotspot/MapServer/WMSServer";

esriConfig.request.interceptors.push({
   urls: wmsLayerUrl,
   before: function(params) {
     if (params.url === url && params.requestOptions.responseType === "xml") {
        if ("fetch" in window && "TextDecoder" in window) {
           // decode the response as ISO-8859-1 if it's not UTF-8 as expected
           return fetch(url + "?SERVICE=WMS&REQUEST=GetCapabilities")
             .then(function(response) {
               return response.arrayBuffer();
             })
             .then(function(buffer) {
               let textDecoder = new TextDecoder("ISO-8859-1"); // specified in the Capabilities XML declaration
               let xmlText = textDecoder.decode(buffer);
               let parser = new DOMParser();
               xml = parser.parseFromString(xmlText, "application/xml");
               return xml;
             });
         }
     }
   }
});

相關用法


注:本文由純淨天空篩選整理自arcgis.com大神的英文原創作品 config.BeforeInterceptorCallback。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。