Javascript回调,调用函数后执行代码

时间:2017-03-21 13:26:15

标签: javascript jquery callback

我的document.ready

中有以下代码
  technicianDropdownFromCBU(cbu_id);
  assetsDropdownFromCBU(cbu_id);

  if(#{@appointment.technician_id.present?}){
     $('#appointment_technician_id').val('{@appointment.technician_id}');
}

我只希望在前两个函数执行完毕后运行if语句。我无法修改这些函数并在该代码中包含if语句,因为该函数被多次调用。

2 个答案:

答案 0 :(得分:2)

一个简单的解决方案是,创建一个回调函数并将if条件放在该函数中。在你的uper函数体内调用你的回调函数,如下所示:

function technicianDropdownFromCBU(cbu_id){
   //do you work here
   assetsDropdownFromCBU(cbu_id);
}

function assetsDropdownFromCBU(cbu_id){
   //do you work here
   callback();
}

function callback(){
  if(#{@appointment.technician_id.present?}){
     $('#appointment_technician_id').val('{@appointment.technician_id}');
  }
}

technicianDropdownFromCBU(cbu_id);

注意:它将按顺序执行您的功能。所以你的if条件最终会运行。

答案 1 :(得分:1)

如果您使用的是 jQuery ,则可以使用:

function someFunctions(cbu_id) {
    technicianDropdownFromCBU(cbu_id);
    assetsDropdownFromCBU(cbu_id);
}

$.when($.ajax(someFunctions(cbu_id))).then(function () {
    if(#{@appointment.technician_id.present?}){
        $('#appointment_technician_id').val('{@appointment.technician_id}');
    }
});