const fetchHeaders = {
'Accept': 'text/html',
'Content-Type': 'text/html',
'X-Requested-With': 'XMLHttpRequest',
'Cache-Control': 'no-cache',
'Pragma': 'no-cache',
'Expires': '0'
};
/**
* Make an AJAX request.
*
* If error, catch return a promise error object:
*
* .catch(err => alert(`${err.url}\n\n${err.status} (${err.statusText})`));
*
* @param url URL of RESTful api to call
* @param options the fetch() options
* @returns Object {Promise, signal: AbortController}
*/
export function AjaxReq(url, options) {
let fetchSignal = new AbortController();
let defaults = {
headers: fetchHeaders,
signal: fetchSignal.signal
};
// Extend default options
Object.assign(defaults, options);
let fetchPromise = fetch(url, defaults)
.then(resp => {
if (resp.status === 200)
return resp.json();
else
return Promise.reject(resp);
});
// Add some properties to return value
let ret = {};
Object.assign(ret, {
fetchPromise: () => fetchPromise,
abort: function () {
fetchSignal.abort()
}
});
return ret;
}