Javascript 如何在回调后禁用界面中的所有按钮

Javascript 如何在回调后禁用界面中的所有按钮,javascript,angularjs,Javascript,Angularjs,我有以下功能 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) {

我有以下功能

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)
    });
    } 
}
函数调用(j,arrayIdColetor){
if(j
函数callFor需要几秒钟才能执行,我希望在callFor函数运行时禁用所有界面按钮。我该怎么解决它

还有一个问题,我有另一个函数,我希望它总是在callFor函数完成后运行


谢谢你的帮助。

也许你可以试试这个?我真的不明白你为什么要使用递归,因为你没有做任何暗示它使用的事情,这只会使你的行为复杂化

function callFor(j, arrayIdColetor) {
  //disable buttons
  for (i = j; i < arrayIdColetor; i++) {
    draw(i, arrayIdColetor, function(){});
  }
  //enable buttons 
}
函数调用(j,arrayIdColetor){
//禁用按钮
对于(i=j;i
阅读您的描述后,您的标题似乎有误导性。应该是“如何在回调后禁用界面中的所有按钮”之类的内容,或者类似的内容。对不起@KФ。我听从了你的建议。TKSA你能给我一个CallFor函数应该是什么样的例子吗?TksOh我不敢相信我以前没有注意到这一点,我一定是累了什么的。。。你在递归地调用CallFor。这样做并不明智,但为什么不在这里使用迭代方法呢?你似乎不需要使用递归?我已经把我的答案改成了我认为对你有帮助的答案。我认为你是对的,我会重构它。我真正需要的是在这个函数运行时阻止一些用户交互。我这样做是为了测试:
function callFor(j,arrayIdColetor){console.log('disable buttons');for(I=j;I
并在draw函数中插入:
console.log('draw,I='+I)结果是:`禁用按钮绘制,i=0绘制,i=1绘制,i=2绘制,i=3绘制,i=4绘制,i=5启用按钮`