BlatakTech
BlatakTechBlog
Open Source 2026.MAR.29 · 5 min read

Mengatasi Respons Stale dengan AbortController dan Retries di Frontend JavaScript

Jery Hardianto
Jery Hardianto Software Engineer
Mengatasi Respons Stale dengan AbortController dan Retries di Frontend JavaScript

Pelajari cara mengatasi respons stale dengan menggunakan AbortController dan retries di frontend JavaScript untuk meningkatkan kinerja aplikasi.

AbortController, Retries, dan Pengelolaan Respons Stale di Frontend JavaScript: Praktik Mengatasi Masalah yang Jarang Dibahas

Dalam pengembangan aplikasi frontend, kita seringkali menghadapi masalah yang jarang dibahas, yaitu pengelolaan respons stale. Respons stale adalah respons yang tidak lagi relevan atau tidak dapat diproses karena beberapa alasan, seperti perubahan data atau kesalahan pengguna. Dalam artikel ini, kita akan membahas tentang AbortController, retries, dan pengelolaan respons stale di frontend JavaScript, serta praktik-praktik yang dapat digunakan untuk mengatasi masalah ini.

Apa Itu AbortController

AbortController adalah sebuah API yang memungkinkan kita untuk menghentikan atau membatalkan permintaan HTTP yang sedang berjalan. Dengan AbortController, kita dapat mengontrol apa yang terjadi ketika permintaan HTTP gagal atau tidak dapat diproses. AbortController dapat digunakan untuk mengatasi masalah respons stale dengan membatalkan permintaan HTTP yang sedang berjalan dan mengirimkan permintaan baru.

Contoh Penggunaan AbortController

Berikut adalah contoh penggunaan AbortController untuk menghentikan permintaan HTTP yang sedang berjalan:

const controller = new AbortController();
const signal = controller.signal;

fetch('https://api.example.com/data', {
  signal: signal,
})
  .then((response) => response.json())
  .then((data) => console.log(data))
  .catch((error) => console.error(error));

// Setelah beberapa saat, kita ingin menghentikan permintaan HTTP yang sedang berjalan
controller.abort();
Dalam contoh di atas, kita membuat instance AbortController dan mendapatkan signalnya. Kemudian, kita mengirimkan permintaan HTTP menggunakan fetch dan mengirimkan signal ke dalam permintaan. Setelah beberapa saat, kita ingin menghentikan permintaan HTTP yang sedang berjalan dengan memanggil metode abort() pada instance AbortController.

Mengapa AbortController Penting

AbortController sangat penting dalam pengelolaan respons stale karena memungkinkan kita untuk menghentikan permintaan HTTP yang sedang berjalan dan mengirimkan permintaan baru. Dengan AbortController, kita dapat mengatasi masalah respons stale dengan lebih mudah dan efektif.

Contoh Use Case

Berikut adalah contoh use case AbortController dalam pengelolaan respons stale:

const controller = new AbortController();
const signal = controller.signal;

// Kita mengirimkan permintaan HTTP untuk mendapatkan data
fetch('https://api.example.com/data', {
  signal: signal,
})
  .then((response) => response.json())
  .then((data) => {
    // Jika data sudah kadaluarsa, kita ingin menghentikan permintaan HTTP yang sedang berjalan
    if (data.expired) {
      controller.abort();
    } else {
      // Jika data belum kadaluarsa, kita ingin mengirimkan permintaan baru untuk mendapatkan data yang lebih baru
      fetch('https://api.example.com/data', {
        signal: signal,
      })
        .then((response) => response.json())
        .then((data) => console.log(data))
        .catch((error) => console.error(error));
    }
  })
  .catch((error) => console.error(error));
Dalam contoh di atas, kita membuat instance AbortController dan mendapatkan signalnya. Kemudian, kita mengirimkan permintaan HTTP untuk mendapatkan data. Jika data sudah kadaluarsa, kita ingin menghentikan permintaan HTTP yang sedang berjalan dengan memanggil metode abort() pada instance AbortController. Jika data belum kadaluarsa, kita ingin mengirimkan permintaan baru untuk mendapatkan data yang lebih baru.

Implementasi / Tutorial

Berikut adalah implementasi AbortController dalam pengelolaan respons stale:

class DataController {
  constructor() {
    this.controller = new AbortController();
    this.signal = this.controller.signal;
  }

  async getData() {
    try {
      const response = await fetch('https://api.example.com/data', {
        signal: this.signal,
      });
      const data = await response.json();
      return data;
    } catch (error) {
      console.error(error);
      return null;
    }
  }

  async reloadData() {
    try {
      const response = await fetch('https://api.example.com/data', {
        signal: this.signal,
      });
      const data = await response.json();
      return data;
    } catch (error) {
      console.error(error);
      return null;
    }
  }

  abort() {
    this.controller.abort();
  }
}

const dataController = new DataController();

// Kita mengirimkan permintaan HTTP untuk mendapatkan data
dataController.getData()
  .then((data) => {
    // Jika data sudah kadaluarsa, kita ingin menghentikan permintaan HTTP yang sedang berjalan
    if (data.expired) {
      dataController.abort();
    } else {
      // Jika data belum kadaluarsa, kita ingin mengirimkan permintaan baru untuk mendapatkan data yang lebih baru
      dataController.reloadData()
        .then((data) => console.log(data))
        .catch((error) => console.error(error));
    }
  })
  .catch((error) => console.error(error));
Dalam contoh di atas, kita membuat class DataController yang memiliki instance AbortController dan mendapatkan signalnya. Kemudian, kita membuat metode getData() dan reloadData() untuk mengirimkan permintaan HTTP dan mendapatkan data. Jika data sudah kadaluarsa, kita ingin menghentikan permintaan HTTP yang sedang berjalan dengan memanggil metode abort() pada instance AbortController. Jika data belum kadaluarsa, kita ingin mengirimkan permintaan baru untuk mendapatkan data yang lebih baru.

Tips dan Best Practices

Berikut adalah beberapa tips dan best practices untuk menggunakan AbortController dalam pengelolaan respons stale:

  • Gunakan AbortController untuk menghentikan permintaan HTTP yang sedang berjalan: Dengan AbortController, kita dapat menghentikan permintaan HTTP yang sedang berjalan dan mengirimkan permintaan baru.
  • Gunakan signal untuk mengirimkan permintaan HTTP: Dengan signal, kita dapat mengirimkan permintaan HTTP dan mendapatkan respons.
  • Gunakan metode abort() untuk menghentikan permintaan HTTP yang sedang berjalan: Dengan metode abort(), kita dapat menghentikan permintaan HTTP yang sedang berjalan dan mengirimkan permintaan baru.
  • Gunakan metode reloadData() untuk mengirimkan permintaan baru: Dengan metode reloadData(), kita dapat mengirimkan permintaan baru untuk mendapatkan data yang lebih baru.
  • Gunakan try-catch untuk menghandle error: Dengan try-catch, kita dapat menghandle error yang terjadi saat mengirimkan permintaan HTTP.

Kesimpulan

Dalam artikel ini, kita telah membahas tentang AbortController, retries, dan pengelolaan respons stale di frontend JavaScript. Dengan AbortController, kita dapat menghentikan permintaan HTTP yang sedang berjalan dan mengirimkan permintaan baru. Kita juga telah membahas tentang beberapa tips dan best practices untuk menggunakan AbortController dalam pengelolaan respons stale. Dengan demikian, kita dapat mengatasi masalah respons stale dengan lebih mudah dan efektif.

abortcontroller frontend-javascript pengembangan-aplikasi respons-stale retries

Gabung Jaringan

Hubungkan feed Anda ke transmisi mingguan kami tentang rekayasa performa tinggi dan desain neural.

Koneksi terenkripsi. Tanpa siaran tidak sah.