为什么这个javascript函数是异步的?

时间:2013-06-21 17:13:45

标签: javascript jquery asynchronous

我只是想调用一个函数并得到一个真/假,并根据它设置一个启用/禁用的按钮..但它在函数完成之前跳过函数!我是一个C#家伙,所以我有一种感觉,我试图用javascript中的c#方式做事情并且它不正确

   if (IsTasksExists()) {
        $("#divValidateUnprocessData").button("enable");
    }
    else {
        $("#divValidateUnprocessData").button("disable");

    }

});

function IsTasksExists() {
    $.ajax(
   {
       type: 'POST',
       url: 'http://localhost:7000/ManualProcess/CheckTasksToValidateAJAX',
       success: function (response) {
           if (response.Status == 'OK') {
               if (response.TasksToValidate == 0) {
                   //  $("#divValidateUnprocessData").button("disable");
                   return false;
               }
               else {
                   return true;
               }
           }
           else {
               alert('error');
           }
       }
   });
}

1 个答案:

答案 0 :(得分:1)

这是正确等待回调的模式:

IsTaskExists(function(exists){
  if (exists) {
    $("#divValidateUnprocessData").button("enable");
  } else {
    $("#divValidateUnprocessData").button("disable");
  }
});

function IsTasksExists(callback) {
  $.ajax( {
    type: 'POST',
    url: 'http://localhost:7000/ManualProcess/CheckTasksToValidateAJAX',
    success: function (response) {
      if (response.Status == 'OK') {
        if (response.TasksToValidate == 0) {
          callback(false);
        } else {
          callback(true);
        }
      } else {
        alert('error');
        callback(false);
      }
    }
  });
};