In diesem Artikel erfahren Sie, wie Sie setTimeout umwandeln, eine Funktion, die danach einen Rückruf ausführt eine bestimmte Verzögerung, in ein Versprechen, das zur Verarbeitung asynchroner Vorgänge verwendet werden kann.
Modernes JavaScript unterstützt native Versprechen, die eine bequeme Möglichkeit zur Darstellung asynchroner Vorgänge bieten. Um setTimeout in ein Promise umzuwandeln, können wir es in einen Promise-Konstruktor einschließen und die Auflösungsfunktion als Rückruf übergeben:
function later(delay) { return new Promise((resolve) => { setTimeout(resolve, delay); }); }
Diese Funktion gibt ein Promise zurück, das nach der angegebenen Verzögerung aufgelöst wird.
Wenn Sie lieber Ihre eigene Versprechen-Implementierung erstellen möchten, können Sie einen Versprechen-Prototyp definieren und ihn als verwenden folgt:
function setTimeoutReturnPromise() { function promise() { } promise.prototype.then = function() { console.log('timed out'); }; setTimeout(() => { return this; // Return the promise object }, 2000); return new promise(); }
Um ein stornierbares Versprechen zu erstellen, können wir setTimeout in ein benutzerdefiniertes Objekt einschließen, das eine Abbruchmethode bereitstellt:
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; } } }; };
Dieses Objekt gibt eine Promise- und eine Cancel-Methode zurück, die zum Beenden des Vorgangs verwendet werden kann.
Das obige ist der detaillierte Inhalt vonWie kann ich „setTimeout' in JavaScript in ein Versprechen umwandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!