I am appending about five thousand records with a jquery foreach loop but sometimes it takes a long time and makes the browser to be crashed.
$.each(data, function(index, consignment) {
if(consignment.delivery_runs !== null){
var delivery_run_name = consignment.delivery_runs.name;
}else{
var delivery_run_name = '';
}
if(consignment.delivery_addresses != null){
var delivery_name = consignment.delivery_addresses.company_name;
var delivery_suburb = consignment.delivery_addresses.suburb;
var delivery_postcode = consignment.delivery_addresses.postcode;
}else{
var delivery_name = '';
var delivery_suburb = '';
var delivery_postcode = '';
}
if(consignment.customers != null){
var customer_name = consignment.customers.name;
}else{
var customer_name = '';
}
$('#consignment_table > tbody').append(`<tr class="consignment-row"><td><label class="kt-checkbox kt-checkbox--single kt-checkbox--solid">
<input type="checkbox" class="kt-checkable check_con" name="check_consignment" data-id="${consignment.id}" value="${consignment.id}">
<span></span>
</label></td><td>${consignment.id}</td><td>${$.trim(customer_name)}</td><td>${consignment.customer_reference}</td><td>${$.trim(delivery_name)}</td><td>${$.trim(delivery_suburb)}</td><td>${$.trim(delivery_postcode)}</td><td>${consignment.carton}</td><td>${consignment.pallet}</td><td>${consignment.space}</td><td>${consignment.weight}</td><td>${$.trim(run_sheet_name)}</td><td>${run_sheet_id}</td><td>${consignment.status}</td><td>${$.trim(delivery_run_name)}</td><td>${$.trim(getFormattedDate(consignment.delivery_date))}</td><td>${$.trim(getFormattedDate(consignment.required_delivery_date))}</td><td>${driver}</td><td>${vehicle}</td><td>${consignment.consignment_type}</td><td>${$.trim(consignment.product_types.name)}</td><td><a href="/consignments/show/${consignment.id}">View</a></td></tr>`);
});
How I can improve this code.