2017-04-26 16 views
1

私はJSとWebApi.Netを学び始めました 私の問題:part_2はpart_1より前に実行されましたが、時には正しく動作することがあります。一貫していないイベント

//**** <part_1> **** 
var link = 'api/Values', 
    ttMass = new Array(); //make ToolTip array 

$(document).ready(function() { 
    $.get(link, { 
    i: 1 
    }, function(data) { //http-response as 'api/Values/1' 
    $.each(data, function(i, val) { 
     ttMass.push(val); 
    }); 
    }); 
}); 
//**** </part_1> **** 

//**** <part_2> ****   
$(document).ready(function() { // 
    $.get(link, { 
    i: 0 
    }, function(data) { //http-response as 'api/Values/0' 
    $.each(data, function(i, val) { 
     $(sel).append('<option value="' + val + '" data-toggle="tooltip" data-placement="right" title="' + ttMass[i] + '">' + val + '</option>'); //fill <select> values and ToolTip 
    }); 
    }); 
}); 
//**** </part_2> **** 

このパーツを一貫して作成するにはどうすればよいですか?

答えて

1

$.get呼び出しは非同期であるため、応答の順序は受信側サーバーの速度に応じて保証されません。

これらが順番に実行されることを保証する必要がある場合は、一方のコールを他方のコールバック内に配置します。

はまた、それがdataに返される正確に同じ値が含まれているとして、あなたのttMass配列が冗長であることに注意してください、あなたはeach()ループせずに直接それを使うことができます。試してみてください:

var link = 'api/Values'; 

$(document).ready(function() { 
    $.get(link, { i: 1 }, function(ttMass) { 
    $.get(link, { i: 0 }, function(data) { 
     var html = data.map(function(val, i) { 
     return '<option value="' + val + '" data-toggle="tooltip" data-placement="right" title="' + ttMass[i] + '">' + val + '</option>'; 
     }); 
     $(sel).append(html); 
    }); 
    }); 
}); 
+0

あなたの最後のコードが動作しています。ありがとう。 しかし、このコードについて。私はあなたが 'ttMass'を埋める場所を理解していません –

+0

' $ .get(link、{i:1}、function(ttMass){'< –

+0

ありがとうございます。 –

関連する問題