Dans cet article, nous explorerons comment transformer setTimeout, une fonction qui exécute un rappel après un délai spécifié, dans une promesse qui peut être utilisée pour gérer des opérations asynchrones.
JavaScript moderne prend en charge les promesses natives qui offrent un moyen pratique de représenter les opérations asynchrones. Pour convertir setTimeout en promesse, nous pouvons l'envelopper dans un constructeur de promesse et transmettre la fonction de résolution comme rappel :
function later(delay) { return new Promise((resolve) => { setTimeout(resolve, delay); }); }
Cette fonction renverra une promesse qui se résout après le délai spécifié.
Si vous préférez créer votre propre implémentation de promesse, vous pouvez définir un prototype de promesse et l'utiliser comme suit :
function setTimeoutReturnPromise() { function promise() { } promise.prototype.then = function() { console.log('timed out'); }; setTimeout(() => { return this; // Return the promise object }, 2000); return new promise(); }
Pour créer une promesse annulable, nous pouvons envelopper setTimeout dans un objet personnalisé qui fournit une méthode d'annulation :
const later = (delay, value) => { let timer = 0; let reject = null; const promise = new Promise((resolve, _reject) => { reject = _reject; timer = setTimeout(resolve, delay, value); }); return { get promise() { return promise; }, cancel() { if (timer) { clearTimeout(timer); timer = 0; reject(); reject = null; } } }; };
Cet objet renvoie une promesse et une méthode d'annulation qui peuvent être utilisées pour terminer l'opération.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!