Table of Contents & Menu
On this page

No subsections

Navigation

Aborting Ajax requests

To prevent multiple or stale requests, it's often necessary to abort an ongoing Ajax request if the same event triggers a new one. This ensures only the latest request is processed.

Here's how to implement this pattern using jQuery:

var saveRequest = null;

function onUpdate() {
    if (saveRequest) {
        saveRequest.abort();
    }
    saveRequest = $.ajax(settings.submit_url, {
        success: function(data) {
            //do something
            saveRequest = null;
        }
    });
}

The modern fetch API achieves the same functionality using an AbortController signal:

let controller;

function onUpdate() {
    if (controller) {
        controller.abort();
    }
    // ensure a new controller is used for the new request
    controller = new AbortController();
    window.fetch(settings.submit_url, {
        signal: controller.signal,
        method: 'post',
        headers,
        body,
    })
    .then(response => {
        // do someThing
    });
}

Note

Be sure to instantiate a new controller instance after the previous one was aborted. It is not possible to reuse an aborted controller signal.