for ループで延期された Dojo の処理に問題があります。私は今これに取り組んでいますが、より高い誰かからの洞察は本当に役に立ちます.これは数日にわたる出来事でした. Dojo deferred は 1 回しか解決できないようで、これが原因で for ループに陥ります。複数の応答を非同期に処理する最良の方法は何ですか。
これが私のスニペットです。このスニペットの外でいくつかの変数が宣言されているグローバルはありません。
*編集: Dojo には、非同期要求を処理することになっている .then() があります。「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;
});
});
}