mirror of
https://github.com/giongto35/cloud-game.git
synced 2026-01-23 10:35:44 +00:00
These modules should be supported by all contemporary browsers, and this transition should resolve most issues related to the explicit import order of the .js files.
26 lines
737 B
JavaScript
26 lines
737 B
JavaScript
const defaultTimeout = 10000;
|
|
/**
|
|
* AJAX request module.
|
|
* @version 1
|
|
*/
|
|
export const ajax = {
|
|
fetch: (url, options, timeout = defaultTimeout) => new Promise((resolve, reject) => {
|
|
const controller = new AbortController();
|
|
const signal = controller.signal;
|
|
const allOptions = Object.assign({}, options, signal);
|
|
|
|
// fetch(url, {...options, signal})
|
|
fetch(url, allOptions)
|
|
.then(resolve, () => {
|
|
controller.abort();
|
|
return reject
|
|
});
|
|
|
|
// auto abort when a timeout reached
|
|
setTimeout(() => {
|
|
controller.abort();
|
|
reject();
|
|
}, timeout);
|
|
}),
|
|
defaultTimeoutMs: () => defaultTimeout
|
|
}
|