Jquery 函数中的ajax异步数组

Jquery 函数中的ajax异步数组,jquery,ajax,Jquery,Ajax,我明白它为什么不起作用。但不知道如何得到结果: 有一个全局数组: var members=[[1,x,y,z],[2,x1,y1,z1],[3,x2,y2,z3]]; function drop() { for (var i = 0; i < members.length-1; i++) { setTimeout(function() { addMarker(); }, i * 30); } } function addMarker() {

我明白它为什么不起作用。但不知道如何得到结果:

有一个全局数组:

var members=[[1,x,y,z],[2,x1,y1,z1],[3,x2,y2,z3]];

function drop() {
  for (var i = 0; i < members.length-1; i++) { 
    setTimeout(function() {
      addMarker();
    }, i * 30);
  }
}

function addMarker() { 
  var marker = new google.maps.Marker({
    position: members[iterator][1],
    icon: pinImage[members[iterator][2]],
    shadow: shadow,
    map: map,
    draggable: false,
    title: members[iterator][3],
    animation: google.maps.Animation.DROP    }); 
  google.maps.event.addListener(marker, 'click', function() {
    $.ajax({
      url : 'ajax/get_infowindow_content.php?id='+members[iterator][0],
      success: function(data) {
        infowindow.close();
        infowindow.setContent(data);
        infowindow.open(map, marker);
      }
    });
  }); 
  markers.push(marker);  
  iterator++;
}
当我单击标记时,它将启动函数并检查成员[iterator][0],但iterator是iterator的最后一个值(在整个循环之后)

最好的解决方案是某种.value(),如:

但这当然行不通


我累坏了。

您只需要一个闭包,并将一个参数传递给addMarker函数:

var members = [[1, x, y, z], [2, x1, y1, z1], [3, x2, y2, z3]];

function drop() {
    for (var i = 0; i < members.length; i++) {
        (function(j) {
            setTimeout(function() {
                addMarker(members[j]); //pass the value
            }, i * 30);
        })(i); //closure to keep the value
    }
}

function addMarker(member) {
    var marker = new google.maps.Marker({
        position: member[1],
        icon: pinImage[member[2]],
        shadow: shadow,
        map: map,
        draggable: false,
        title: member[3],
        animation: google.maps.Animation.DROP
    });
    google.maps.event.addListener(marker, 'click', function() {
        $.ajax({
            url: 'ajax/get_infowindow_content.php?id=' + member[0],
            success: function(data) {
                infowindow.close();
                infowindow.setContent(data);
                infowindow.open(map, marker);
            }
        });
    });
    markers.push(marker);
}​
var成员=[[1,x,y,z],[2,x1,y1,z1],[3,x2,y2,z3];
函数drop(){
对于(var i=0;i