我在處理for循環中延遲的dojo時遇到了問題。我現在正在努力解決這個問題,但是任何來自更高級別的人的真知灼見都會有所幫助,這是一個多日的事情。似乎Dojo延遲只能解析一次,這會導致它在for循環中廢話。什麼是異步處理多個響應的最佳方式。dojo推遲了for循環
這是我的代碼片段,沒有全局變量在這段代碼之外聲明。
* 編輯:Dojo有一個.then(),它應該處理異步請求。這是否適合任何人,當使用'then()'我可以看到電話開始,但他們從來沒有表現出完成。在那之後我需要添加一個c'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;
});
});
}
您可以添加一些關於您正在嘗試做什麼的背景嗎?您是否嘗試進行多個異步調用,並等待所有人都返回?你在控制檯看到什麼錯誤? – BuffaloBuffalo
@BuffaloBuffalo是的,我正在進行多個異步調用。調用正在進行並且數據正在返回,我可以看到「lyrIdent」數組被填充了數據,但dojo延遲對象沒有返回任何內容,在讀取dojo延遲對象時,它似乎只處理一個單獨的對象數組同步與數組中的多個對象異步 – atlMapper