Select to view content in your preferred language

How to call a querytask.execute in a event

915
3
06-13-2014 07:15 AM
YinghongLi
Frequent Contributor
My map needs to be updated every 15 minutes. I need to query to get new data time from the update. So i put a query function in "update-end" event. However the display function is never called. please help. Thanks

system info: ArcGIS Server 10.2.1; Javascript API 3.9

var l;

            if (layer.type == 'dynamic')
            {
                l = new esri.layers.ArcGISDynamicMapServiceLayer(layer.url, layer.options);

                l.on("update-end", function (evt)
                {
                    refreshcount++;
                    var timequery = new query();
                    alert("fewsquerytask==" + config.fewsQueryTaskService);
                    var queryTask = new QueryTask(config.fewsQueryTaskService);
                    timequery.returnGeometry = false;
                    timequery.outFields = ["PACKET_DATE_TIME"];
                    timequery.where = "PACKET_DATE_TIME is not null";

                    queryTask.execute(querytime, showTime);

                    function showTime(listfeatures)
                    {
                        alter("inside showTime");
                        var feature = listfeatures.features[0];
                        var value = feature.attributes["PACKET_DATE_TIME"];
                        alert("packet value==" + value);
                        dom.byId("packettime").innerHTML = "Refresh:  "+refreshcount+"  Packet Time:  " + value;
                    }                       

                  
                });
0 Kudos
3 Replies
MarcusTownsend
Deactivated User
May or may not work as expected but Thought I would point you in a possible right direction. you should be able to use a the  set interval function in Javascript to do what your trying to do.


  var refreshevent = setInterval(function (evt)
                  {
                  refreshcount++;
                  var timequery = new query();
                  alert("fewsquerytask==" + config.fewsQueryTaskService);
                  var queryTask = new QueryTask(config.fewsQueryTaskService);
                  timequery.returnGeometry = false;
                  timequery.outFields = ["PACKET_DATE_TIME"];
                  timequery.where = "PACKET_DATE_TIME is not null";

                    queryTask.execute(querytime, showTime);

function showTime(listfeatures)
{
alter("inside showTime");
var feature = listfeatures.features[0];
var value = feature.attributes["PACKET_DATE_TIME"];
alert("packet value==" + value);
dom.byId("packettime").innerHTML = "Refresh: "+refreshcount+" Packet Time: " + value;
} 
},900000);
  
0 Kudos
YinghongLi
Frequent Contributor
thanks.  I would give it a try.

the error was caused by a miss spelled variable name in queryTask.execute(querytime, showTime);  querytime should be timequery as it is defined in the code above.
0 Kudos
JonathanUihlein
Esri Regular Contributor
I would recommend using Deferreds and Promises over a native timer.
0 Kudos