It's not entirely clear what you're trying to do here.
If you want to abort one AJAX request when another one starts, you'll want to use an
AbortController
:
AbortController - Web APIs | MDN[
^]
That means you'll probably want to switch to the
fetch
API:
Fetch API - Web APIs | MDN[
^]
To simplify the code, you'll probably also want to use an
async
function:
async function - JavaScript | MDN[
^]
let abortController = null;
const load_stream = async (data) => {
if (abortController) { abortController.abort(); }
const url = new URL("https://...");
if (data) {
Object.entries(data).forEach(entry => {
const [key, value] = entry;
url.searchParams.set(key, value);
});
}
abortController = new AbortController();
try {
const response = await fetch(url, { signal: abortController.signal });
if (!response.ok) {
console.error(response.status, response.statusText);
return [];
}
const result = await response.json();
return result.myReturnValue;
} catch (e) {
console.error(e);
return [];
}
};
const MyObjList = function(){
let id,
page,
publish;
return {
get_myValue: async function() {
const jsonData = { 'pID': id, 'cID': publish };
page = await load_stream(jsonData);
}
}
};
const Mediator = function(){
let MyObj = [];
return {
addObj: async function(){
const newMyObj = object.create(MyObjList());
MyObj.push(newMyObj);
await newMyObj.get_myValue():
}
}
};