Javascript 对多个AJAX请求使用jQuery promise并在success函数中传递参数

Javascript 对多个AJAX请求使用jQuery promise并在success函数中传递参数,javascript,jquery,ajax,coffeescript,Javascript,Jquery,Ajax,Coffeescript,我有一个下面的函数 finalResults = [] promises = [] for i in arr1 for j in arr2 request = $.ajax url:"/getData" data: userId:1 dataType:"JSON" success: (results) => finalResults.push data : results

我有一个下面的函数

finalResults = []
promises = []

for i in arr1
  for j in arr2

    request = $.ajax
      url:"/getData"
      data:
        userId:1
      dataType:"JSON"
      success: (results) =>
        finalResults.push
          data   : results
          index1 : i
          index2 : j

     promises.push(request)

$.when.apply(null, promises).done( (a) =>
  for i in finalResults
    console.log(i.index1, i.index2)  // these values are incorrect!
)
看起来传递变量i和j没有正确加载到最终结果。我明白原因了,因为这些是异步请求


如何更改此选项以获得与每个AJAX请求相对应的正确变量?

看起来这个常见问题不使用全局finalResults变量。正确使用承诺。