0

複数の 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で複数の取得が行われた場合とまったく同じ応答が得られます。

なぜこうなった?これは、コールバックの性質と関係があると思います。

4

1 に答える 1