Middle+
Implémentez la fonction withTimeout, qui prend une fonction et un temps (en millisecondes) et retourne une nouvelle fonction. Si la fonction d'origine ne s'exécute pas dans le délai imparti, la promesse doit être rejetée.
sobes.tech IA
Réponse de l'IA
La fonction withTimeout doit accepter une fonction qui retourne une promesse et un temps en millisecondes. Elle retourne une nouvelle fonction qui, lorsqu'elle est appelée, exécute la fonction d'origine et démarre simultanément un minuteur. Si la fonction d'origine ne se termine pas dans le délai imparti, la promesse est rejetée avec une erreur de timeout.
Exemple d'implémentation en JavaScript:
function withTimeout(fn, ms) {
return function(...args) {
return new Promise((resolve, reject) => {
const timer = setTimeout(() => {
reject(new Error('Timeout'));
}, ms);
fn(...args)
.then(result => {
clearTimeout(timer);
resolve(result);
})
.catch(err => {
clearTimeout(timer);
reject(err);
});
});
};
}
// Utilisation:
// const fetchWithTimeout = withTimeout(fetch, 5000);
// fetchWithTimeout('https://example.com').then(...).catch(...);