如何在promise Angularjs中更改全局变量的值

时间:2015-11-14 14:23:45

标签: javascript angularjs

我的代码:

    query.equalTo('idColetor', arrayIdColetor[i]);
        query.greaterThan('tsmilliseconds', tsmillisecondsCurrent[i]);            
        var promise = $kinvey.DataStore.find('BusDroid', query); 

        promise.then(function(response) {
          if(response.length > 0){
             for(var j = 0; j < response.length; j++) {                 
                 path.push(new google.maps.LatLng({lat: response[j].lat, lng: response[j].lng}));                 
             }

             tsmillisecondsCurrent[i] = response[j - 1].tsmilliseconds;
    }
});

我将数组tsmillisecondsCurrent声明为全局变量var tsmillisecondsCurrent = []。 但是当我更改tsmillisecondsCurrent值tsmillisecondsCurrent[i] = response[j - 1].tsmilliseconds;时,此值不会更新此promise函数。

如何更改promise中的全局变量值?

1 个答案:

答案 0 :(得分:0)

由于它是一个循环,i变量会在执行promise时发生变化。你可以试试这样的东西

修改

var promise = $kinvey.DataStore.find('BusDroid', query); 
   /*create a custom index for promise object*/
   //promise.index=i; This wont work
    promise.then(
      (function(index){
       return function(response) {
      if(response.length > 0){
         for(var j = 0; j < response.length; j++) {                 
             path.push(new google.maps.LatLng({lat: response[j].lat, lng: response[j].lng}));                 
         }

         tsmillisecondsCurrent[index] = response[j - 1].tsmilliseconds;
        }
}
 }(i))//this will work, by passing i here it will retain the value
);