我的代码:
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中的全局变量值?
答案 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
);