複数の ajax get を作成しているループがあります。
for dataType in @dataTypes
url = someUrl + dataType
console.log(dataType)
console.log url
$.ajax(
url : url
type : 'GET'
success : (data) => @populateSearchIndices(data,dataType)
)
populateSearchIndices:(data,dataType)->
console.log "looking at what indexes are there"
console.log dataType
indices = []
for object in data
indices = indices.concat(Object.keys(object))
console.log "indices"
console.log indices
arr = @typeIndexMap[dataType]
if arr
@typeIndexMap[dataType] = @typeIndexMap[dataType].concat(indices)
else
@typeIndexMap[dataType] = indices
console.log "typeIndexMap"
console.log @typeIndexMap
最初の関数の console.log dataType が両方を表示し、ループが発生していることを示唆しているにもかかわらず、dataType の console.log は常に @dataTypes の最後の dataType を返します。
URLも印刷しました-どちらも異なりますが、最後のdataTypeがsomeUrlに追加され、そのURLで複数の取得が行われた場合とまったく同じ応答が得られます。
なぜこうなった?これは、コールバックの性質と関係があると思います。