Gelöst: Zeitüberschreitung

Letzte Aktualisierung: 09/11/2023

In der Welt der Programmierung und Webentwicklung ist es wichtig zu wissen, wie man mit Timeout-Problemen umgeht. Fehler können aus verschiedenen Gründen auftreten, wie z. B. Netzwerklatenz, Serverlast usw. Die Strategie des Umgangs mit Zeitüberschreitungen wird zum Rückgrat der Robustheit eines Programms.

Um Zeitüberschreitungen besser zu verstehen, betrachten wir den Fall eines Automotors. Wenn Sie den Zündschlüssel drehen, können Sie davon ausgehen, dass der Motor in weniger als wenigen Sekunden anspringt. Ist dies nicht der Fall, warten Sie möglicherweise noch ein paar Sekunden, bevor Sie die Zündung ausschalten und versuchen, den Motor erneut zu starten. Diese Schwellenzeit, bevor Sie sich entscheiden, anzuhalten und neu zu starten, ähnelt den Zeitüberschreitungen in der Programmierwelt.

Die Typescript-Lösung

Typescript, eine statisch typisierte Obermenge von JavaScript, stellt Entwicklern die Tools zur Verfügung, die sie zum effektiven Umgang mit Zeitüberschreitungen benötigen. Um die Zeitüberschreitung zu verwalten, erstellen wir ein Versprechen, das entweder innerhalb des angegebenen Zeitlimits erfolgreich gelöst wird oder bei Überschreitung abgelehnt wird. Hier ist ein Beispiel:

function timeout(ms: number, promise: Promise<any>): Promise<any> {
    return new Promise(function(resolve, reject) {
        setTimeout(function() {
            reject('Timed out in '+ ms + 'ms.');
        }, ms);
        promise.then(resolve);
    });
}

Den Code verstehen

Entwickler finden es oft einfacher, Probleme zu verstehen, wenn die Lösung in kleinere, überschaubare Teile zerlegt wird.

Punkt 1: Zunächst erstellen wir eine Funktion namens „timeout“, die „ms“ und „promise“ als Parameter akzeptiert. „ms“ ist ein Timeout-Limit in Millisekunden und „promise“ ist das ursprüngliche Versprechen, das wir auszuführen versuchen.

function timeout(ms: number, promise: Promise<any>)

Punkt 2: Innerhalb der Funktion „timeout“ geben wir ein neues Versprechen mit den Parametern „resolve“ und „reject“ zurück.

return new Promise(function(resolve, reject)

Punkt 3: Wir verwenden setTimeout, um eine „Ablehnung“ auszulösen, wenn unser Limit (ms) erreicht ist, bevor das Versprechen aufgelöst wird.

setTimeout(function() {
            reject('Timed out in '+ ms + 'ms.');
        }, ms);

Punkt 4: Wenn das ursprüngliche Versprechen vor ms aufgelöst wird, übergeben wir die Auflösung einfach zusammen mit „promise.then(resolve)“

promise.then(resolve);

Indem wir eine Zeitüberschreitung erzwingen, können wir sicherstellen, dass unser Code nicht endlos auf eine Antwort wartet.

Zugehörige Bibliotheken und Funktionen

Typescript verfügt nicht über eine vorgefertigte Bibliothek zum Verwalten von Zeitüberschreitungen. Allerdings ist es aufgrund seiner engen Verbindung mit JavaScript und dem riesigen Ökosystem von npm-Modulen praktisch. Einige verwandte JavaScript-Funktionen sind:

  • SetTimeout(): Dabei handelt es sich um eine Funktion, die Teil der Fenster-Timing-Ereignisse ist und die Ausführung des Codes für einen festgelegten Zeitraum anhält und dann den Code ausführt.
  • ClearTimeout(): Diese Funktion stoppt die Ausführung des Codes, der durch die Funktion setTimeout() verzögert wurde.
  • SetInterval(): Ähnlich wie setTimeout() in der Funktion, aber anstatt den Code einmal nach einer bestimmten Zeit auszuführen, führt setInterval() den Code wiederholt nach einem festgelegten Zeitintervall aus, bis clearInterval() aufgerufen wird.
  • ClearInterval(): Diese Funktion wird verwendet, um die Ausführung des von setInterval() festgelegten Codes zu stoppen.

Der reibungslose Umgang mit Zeitüberschreitungen im Typescript-Code ist immens. Obwohl es relativ einfach ist, sorgt das Verständnis und die Verwendung geeigneter Timeout-Methoden nicht nur für eine reibungslose Benutzererfahrung, sondern steigert auch die Effektivität und Professionalität Ihres Programms.

Zusammenhängende Posts: