我有以下功能
function draw(i, arrayIdColetor, callback) {
var query = new $kinvey.Query();
query.equalTo('idColetor', arrayIdColetor[i]);
var promise = $kinvey.DataStore.find('myDatabase', query);
var latLong = promise.then(function(response) {
coordenadas = [];
for(var j = response.length - 1; j >= 0 ; j--) {
coordenadas.push( {lat: response[j].lat, lng: response[j].lng});
}
return coordenadas;
});
latLong.then(function(coordenadas) {
$kinvey.poly[i] = new google.maps.Polyline({ path: coordenadas, ... });
$kinvey.poly[i].setMap($kinvey.map); });
callback();
}
该函数由以下函数调用:
function callFor(j, arrayIdColetor) {
if (j < arrayIdColetor.length){
draw(j, arrayIdColetor, function() {
callFor(j + 1, arrayIdColetor)
});
}
}
函数callFor需要花费几秒钟的时间才能执行,我希望在callFor函数运行时禁用所有界面按钮。我该怎么解决?
还有一个问题,我想让另一个函数始终在callFor函数完成后运行。
谢谢你的帮助。
最佳答案
也许您可以尝试一下?我真的不明白为什么要使用递归,因为您没有做任何暗示使用递归的事情,而这只会使您想要的行为变得复杂。
function callFor(j, arrayIdColetor) {
//disable buttons
for (i = j; i < arrayIdColetor; i++) {
draw(i, arrayIdColetor, function(){});
}
//enable buttons
}