2017-03-21 22 views
0

を呼び出した後にコードを実行するには、私は私が最初の2つの機能の実行が終了した後にif文を実行するために私のdocument.readyJavascriptのコールバック関数

technicianDropdownFromCBU(cbu_id); 
    assetsDropdownFromCBU(cbu_id); 

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

に次のコードを望んでいます。関数を複数回呼び出すため、これらの関数を変更したり、そのコードにifステートメントを含めたりすることはできません。

+0

あなたが使用することができます[Deffered /約束](https://api.jquery.com/category/deferred-object/)... 'when ... then'と... –

+0

あなたは[async.series](http://caolan.github.io/async/)を見ましたか – bloodyKnuckles

答えて

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条件は最後に実行されます。

+0

私はそれらの他の機能を変更したくはありませんでしたが、答え! –

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}'); 
    } 
}); 
関連する問題