//sample code - not for production //should consider using Promise and PromiseAll function getSelectionLayerDeferred(featureLayerArray, selectQuery) { var returnDeferred = null; var selectionLayers = []; var defferredCallArray = []; require(["dojo/DeferredList", "dojo/Deferred"], function (DeferredList, Deferred) { returnDeferred = new Deferred(); dojo.forEach(featureLayerArray, function (flayer) { var defferredCall = flayer.selectFeatures(selectQuery, esri.layers.FeatureLayer.SELECTION_NEW); //cast the dojo.deferred to a promise so we can use the new //dojo/promise/all in lieu of dojo/DeferredList (deprecated at v 1.8) defferredCallArray.push(defferredCall); }); var dl = new DeferredList(defferredCallArray); dl.then(function (results) { // Executed when all deferred resolved if (results.length > 0) { dojo.forEach(results, function (result) { if (result[0] === true && result[1].length > 0) { selectionLayers.push({ 'featureLayer': result[1][0].getLayer(), 'features': result[1] }); } }); } returnDeferred.resolve({ 'success': true, 'selectionLayers': selectionLayers }); }, function (err) { returnDeferred.resolve({ 'success': false, 'selectionLayers': null, 'error': err }); }); }); return returnDeferred; } //here is some sample code of how I implement it //not for production //select related records var selQuery = new esri.tasks.Query(); selQuery.where = "GAZ_ID = " + updateGraphic.attributes["GAZ_ID"]; var deferred = getSelectionLayerDeferred([landformAllpointFeatureService], selectQuery); deferred.then(function (results) { if (results.success && results.selectionLayers) { //bind to data to add to grid //TODO: work in progress ... // buildDataStore(results.selectionLayers[0].features) setDisableToolbarControls(ToolbarType.Editor_Select, false); hideProcessingDialog(); refreshMap(); } else { setDisableToolbarControls(ToolbarType.Editor_Select, true); hideProcessingDialog(); } }, function (error) { // Do something on failure. hideProcessingDialog(); drawToolbar.deactivate(); //var err = results.error; alert("Error ...") });
Aangemelde leden kunnen berichten plaatsen, updates volgen en meer. Nieuw hier? Registreer een gratis account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.