【问题标题】:Can dojo/promise/all used for xhr request and arcgis querytask together?dojo/promise/all 可以一起用于 xhr request 和 arcgis querytask 吗?
【发布时间】:2018-10-23 02:23:41
【问题描述】:

我有一个普通的 XHR 请求和 json 响应。我还有另一个 arcgis 查询任务要执行。

上述两个异步请求可以使用dojo/promise/all来处理所有返回的响应吗?如果是,怎么做?

【问题讨论】:

    标签: promise dojo arcgis


    【解决方案1】:

    是的。 首先,XHR 对象应该由 esri/request 创建。返回的对象是 promise。 queryTask 对象是 promise。

    代码如下:

    <script>
        require(['dojo/Deferred', 'dojo/promise/all',"esri/request", "esri/config", "esri/tasks/QueryTask","esri/tasks/query"], function(Deferred, all,esriRequest,esriConfig,QueryTask,Query) {
            // code to initate query tasks here
            var qURL = "https://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer/5";
    
            var queryTask  = new QueryTask(qURL);
    
            var query  = new Query();
            query.returnGeometry = false;
            query.where = "STATE_NAME='California'";
            query.outFields = ["*"];
            esriConfig.defaults.io.corsEnabledServers.push("earthquake.usgs.gov");
            esriConfig.defaults.io.corsEnabledServers.push("https://sampleserver1.arcgisonline.com");
    
            var url = "https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/1.0_day.geojson";
            var requestHandle = esriRequest({
                "url":url
            });
            
            var deferredTask1 = new Deferred();
    
    
            queryTask.execute(query );
            queryTask.on("complete", function(evt1) {
                deferredTask1.resolve(evt1);
            });
    
    
            all([deferredTask1,  requestHandle]).then(function(results) {
                // results will be an Array
                var t=results;
                console.log("state fips =" +results[0].featureSet.features[0].attributes["STATE_FIPS"]);
                console.log("earthquake id=" +results[1].features[0].id);
            });
    
    
        });
    </script>
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title><!DOCTYPE html>
            <html lang="en">
            <head>
                <meta charset="UTF-8">
                <title></title>
    
                <script src="https://js.arcgis.com/3.26/"></script>
            </head>
    <body>
    
    
    </body>
    </html>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-19
      • 1970-01-01
      • 1970-01-01
      • 2021-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多