mirror of
https://github.com/giongto35/cloud-game.git
synced 2026-07-21 00:59:22 +00:00
* Initial new frontend rewrite * Refactor some module deps * Fix options ref in the ajax module * Refactor * Add controller state * Refactor
29 lines
No EOL
832 B
JavaScript
Vendored
29 lines
No EOL
832 B
JavaScript
Vendored
/**
|
|
* AJAX request module.
|
|
* @version 1
|
|
*/
|
|
const ajax = (() => {
|
|
const defaultTimeout = 10000;
|
|
|
|
return {
|
|
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
|
|
}
|
|
})(); |