POST
|
Thank you, John. I can see where this would be a costly operation but it is something we require. Fortunately, we are doing it on a limited number of layers. I've tried code very similar to yours to no avail but I did get Ken's working. I may take a second look at yours as it is so similar to what I was doing and I hate being defeated.
... View more
12-02-2014
02:25 PM
|
0
|
0
|
884
|
POST
|
It works! It works! IT WORKS!!!!! Ken, I can't thank you enough!!!! Matthew, thank you as well; your information will be valuable to me in other aspects but Ken is doing exactly what I am trying to do. I have struggled with this for days! May I ask you both, what is your source of knowledge on this?
... View more
12-02-2014
01:48 PM
|
0
|
1
|
884
|
POST
|
I need some help before I lose what shred of sanity I have left. Let me start out by saying that I am pretty new to JavaScript and dojo. I am trying to rewrite our JS maps to AMD and have hit a wall when it comes to converting a DeferredList to the new dojo/promise API. Not to overwhelm you with code, I'll just paste a snippet of the "old" code (I am aware of converting to array.map etc. but just want to show what I'm starting with). var tasks = dojo.map(layers, function(layer) { return new esri.tasks.IdentifyTask(layer.url); }); //map each visible dynamic layer to a new identify task, using the layer url var defTasks = dojo.map(tasks, function (task) { return new dojo.Deferred(); }); //map each identify task to a new dojo.Deferred var dlTasks = new dojo.DeferredList(defTasks); //And use all of these Deferreds in a DeferredList dlTasks.then(showIDResults); //chain showResults nto your DeferredList ***PROBLEM HERE**** idParams.width = map.width; idParams.height = map.height; idParams.geometry = evt.mapPoint; idParams.mapExtent = map.extent; alert(tasks.length); for (i=0;i<tasks.length;i++) { //Use 'for' instead of 'for...in' so you can sync tasks with defTasks try { tasks[i].execute(idParams, defTasks[i].callback, defTasks[i].errback); //Execute each task } catch (e) { console.log("Error caught"); console.log(e); defTasks[i].errback(e); //If you get an error for any task, execute the errback } } The showIDResults function expects an array of results from execution of the tasks. This is were I'm having a problem. No matter what I try (and I've tried a lot of things) I end up with a Deferred or a Promise rather than actual results to pass to showIDResults. Am I making any sense? Any help would be greatly appreciated!
... View more
12-02-2014
12:45 PM
|
0
|
7
|
4151
|
Online Status |
Offline
|
Date Last Visited |
11-11-2020
02:24 AM
|