我在处理 for 循环中延迟的 dojo 时遇到问题。我现在正在解决这个问题,但是来自更高级别的人的任何见解都会真正有帮助,这是一个多天的事情。似乎 Dojo deferred 只能解决一次,这导致它在 for 循环中出错。什么是异步处理多个响应的最佳方式。
这是我的片段,在这个片段之外没有声明一些变量的全局变量。
*编辑:Dojo 有一个 .then() 应该处理异步请求。这对任何人来说都是正确的,当使用“then()”时,我可以看到调用开始,但它们从未显示为已完成。之后我需要添加 ac 'deferred.callback' 吗?*
for (var j = 0; j < ident.length; j++) {
if(ident[j].url != "http://services.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Light_Gray_Reference/MapServer"){
deferred = ident[j].execute(idParams);
}
deferred.*then*(function(response){
return dojo.map(response, function(result){
var feature = result.feature;
feature.attributes.layerName = result.layerName;
//console.log(feature.attributes);
lyrIdent.push(feature.attributes);
var template = new esri.InfoTemplate("Prefix: ${PREFIX} <br/>Suffix: ${SUFFIX}<br/>Divcode: ${DIVCODE}<br/> lmp: ${LMP} <br/>hmp: ${HMP}");
feature.setInfoTemplate(template);
return feature;
});
});
}