Membatalkan proses Ajax yang berjalan

Kadang, pada kondisi tertentu ada proses yang ingin dibatalkan ketika mengirim data ajax terlebih dahulu. Sebagai contoh, ketika ajax terlalu lama, user melakukan proses dimana proses bergantung dari proses sebelumnya, jika ini terjadi, error atau ambigu proses pasti terjadi.

Contoh proses lain adalah kita menampilkan kalender, tiap user klik salah satu tanggal, kita proses ajax untuk mengambil data berdasarkan tanggal yang diklik oleh user. Karena mungkin internet yang lama, padahal terdapat proses mengambil data ke belakang dengan ajax, user mengklik sembarang ke tanggal-tanggal lain. Alhasil, proses jadi berantakan, hasil yang diterima dari ajax pun akan ambigu karena ajax bersifat syncronous.

Untuk menangani hal ini, ada beberapa cara yang pertama adalah cara antrian ajax yang dulu saya tulis di artikel ini https://www.adiputra.web.id/cara-buat-ajax-agar-mengantri-queue/. Lalu cara kedua adalah batalkan proses yang sedang berlangsung, lalu jalankan proses yang terakhir.

Batalkan proses ajax? bagaimana caranya?

Ajax jQuery menyediakan fungsi/method .abort() untuk membatalkan proses ajax. Simplenya seperti ini

var current_ajax;

// proses lain

if(typeof current_ajax == 'object') {
  current_ajax.abort();
}

current_ajax = $.ajax({masukan parameter ajax});

Yap, buat variable untuk menyimpan object ajax, anggap variable tersebut tidak memilik tipe data alias ‘undefined’. Lalu lakukan check tipe data variable tersebut, jika bertipe object sudah dipastikan tipe ajax dan harus kita abort karena dibawah kode kita ingin panggil proses ajax lainnya. Proses ajax yang dibawah jangan lupa disimpan di variable lagi.

Sampai disini, ajax yang sebelumnya pasti dibatalkan.

Sangat mudah bukan 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.