tech

Table of Content

Introduction

Ini terjadi di project QA Lab. Dimana user melakukan klik beberapa kali ketika jaringan lemot. Ini menyebabkan permintaan ganda ke server. Ini dapat terjadi jika pengguna mengklik tombol “Simpan” beberapa kali sebelum respons dari server diterima. Kali ini gue memilih menggunakan flag untuk mencegah pengiriman data.

Apa Itu Flag?

  • Definisi: Flag adalah variabel yang digunakan untuk menunjukkan kondisi atau status tertentu dalam program. Biasanya, flag diwakili sebagai nilai boolean (true/false).
  • Fungsi: Flag berfungsi untuk mengontrol alur program dengan memberikan sinyal kapan kondisi tertentu terpenuhi atau tindakan harus diambil.

Contoh Penggunaan Flag

let isSubmitting = false;
 
$(document).on("click", "#submitBtn", function() {
    if (isSubmitting) return; // Jika sudah dalam proses, keluar dari fungsi
    isSubmitting = true; // Set flag menjadi true
 
    let data = [];
    
    $('#table tbody tr').each(function() {
        let rowIndex = $(this).attr('id').split('-')[1]; 
        let rowData = {
            mid: $(`#mid_${rowIndex}`).val(),
            kategori: $(`#kategori_${rowIndex}`).val(),
            tgl_produksi: $(`#tgl_produksi_${rowIndex}`).val(),
            batch: $(`#batch_${rowIndex}`).val(),
            jumlah_sampel: $(`#jumlah_sampel_${rowIndex}`).val(),
        };
        
        if (rowData.mid 
            && rowData.tgl_produksi 
            && rowData.batch 
            && rowData.jumlah_sampel 
        ) {
            data.push(rowData);
        }
    });
    
    $.ajax({
        url: "/shelf-life-qa/qc/seasoning/tambah-sample-sambal", 
        method: "POST",
        data: {
            data: data  
        },
        success: function(res) {
            if (res.success) {
                notification("Berhasil","success","Data berhasil disimpan.");
                resetForm();
            } 
            
            if(res.varian_validation){
                notification("Gagal","error",res.message);
            }
        },
        error: function(xhr){
            let errors = xhr.responseJSON.errors;
            let message = '';
            $.each(errors, function(key, value) {
                message += value[0] + '<br>';
            });
 
            notification("Error","error",message);
        },
        complete: function() {
            isSubmitting = false; // Reset flag setelah permintaan selesai
        }
    });
});

Date: 28-01-2025