JavaScriptのfetch()でタイムアウトをsignalを使って設定する例
code:js
function timeoutGet(path, timeout) {
const controller = new AbortController();
const resPromise = fetch(path, {
signal: controller.signal,
});
setTimeout(() => {
controller.abort();
}, timeout);
return resPromise;
}
(async () => {
const start = new Date();
let error = null;
try {
} catch(err) {
error = err;
}
const end = new Date();
console.log(error);
return ${(end - start) / 1000} sec, error: ${error};
})()
タイムアウトする前にresPromiseが成功したときにcontroller.abort()してもエラーは発生しないことをFirefoxで確認。