私は、毎秒実行されるsetInterval関数を持っています。さて、ブラウザで私のコンソールを調べてみたところ、setInterval関数内の関数が時々2回実行されていました。どうすれば2回の実行を防ぐことができますか?ここでは、今、check_getqueue
関数の内部で、私はまた、私は二度実行しているから、それを防ぐためにしたいという機能を持っているsetInterval関数が2回実行されるのを防ぐ
$('#myclinic_id').change(function(){
clearInterval(interval);
lastQueueID = 0;
$("#boxqueue").empty();
var selectedClinicID = $(this).val();
clinicID = selectedClinicID;
statusClinic(clinicID, userID);
show_patients(clinicID, userID);
if(selectedClinicID != "0" || selectedClinicID != undefined){
interval = setInterval(function(){
check_getqueue(clinicID, userID);
}, 4000);
}
});$('#myclinic_id').change(function(){
clearInterval(interval);
lastQueueID = 0;
$("#boxqueue").empty();
var selectedClinicID = $(this).val();
clinicID = selectedClinicID;
statusClinic(clinicID, userID);
show_patients(clinicID, userID);
if(selectedClinicID != "0" || selectedClinicID != undefined){
interval = setInterval(function(){
check_getqueue(clinicID, userID);
}, 4000);
}
});
私の問題が発生している:
は、ここに私のsetIntervalです。ここで私のコードはcheck_getqueue関数の中にあります。ここでは、check_getqueue関数内でrefresh_afterdel(clinicID, userID);
という関数が実行されないようにしています。ここで
は私check_getqueueの完全なコードです:
function check_getqueue(clinicID, userID) {
var tmpCountQ = [];
$.ajax({
url: siteurl+"sec_myclinic/checkingUpdates/"+clinicID+"/"+userID,
type: "POST",
dataType: "JSON",
success: function(data) {
for(var i=0;i<data.length;i++) {
tmpCountQ.push(data[i]['queue_id']);
};
if(typeof lastCon[0] != "undefined")
{
for(j=0;j < tmpCountQ.length;j++)
{
if(tmpCountQ[j] != lastCon[j])
{
refresh_afterdel(clinicID, userID);
lastCon[j] = tmpCountQ[j];
}
}
}
else
{
lastCon = tmpCountQ;
}
// console.log("lastCon "+lastCon)
// console.log("tmpCountQ "+tmpCountQ);
}
});
}
を重複したコードを削除しますか? – evolutionxbox
代わりに 'setTimeout()'を使用してください – mike510a