In JavaScript ist es leider nicht Möglich, das aus anderen Sprachen bekannte Konzept der Threads zu verwenden. In JavaScript läuft alles in einem Hauptthread und blockiert gegebenenfalls das UI.
Hier möchte ich euch einen kleinen Umweg zeigen, wie man einen Asynchronen Function Call umsetzen kann.

Gehen wir von folgendem Problem aus. Dein Skript startet nun eine länger andauernde Berechnung. Damit der Besucher bescheid weiß soll er mit einer MessageBox darauf hingewiesen werden.

alert("Bitte haben Sie einen Augenblick Geduld...");
startLongProcedure();
// Do something when it's ready!

Das Problem bei diesem Code ist, dass die Berechnung nicht startet, bis der Besucher die alert-Box bestätigt hat.

Eine für viele ähnliche Probleme bequeme Lösung wäre folgendes, oder nicht?

alert.async("Bitte haben Sie einen Augenblick Geduld...");
startLongProcedure();
// Do something when it's ready!

An dieser Stelle machen wir uns dem Prototypischen Konzept von JavaScript zunutze und erweitern jede Function um eine async Methode. Da in JavaScript fast alles eine Function ist, schlagen wir quasi mit einem Holzhammer zu!

Function.prototype.async = function () {
    setTimeout.bind(null, this, 0).apply(null, arguments);
};
Categories: JavaScript

0 Comments

Leave a Reply