Hacks für synchrone JavaScript-Aufrufe [duplizieren]
Diese Frage hat hier bereits eine Antwort:
Synchrones Verhalten in Javascript? 4 AntwortenJavaScript verwendet asynchrone Aufrufe in den meisten modernen APIs, die sich mit "langsamen" Dingen wie Festplatten-E / A und Netzwerk befassen. Mir ist klar, wozu das gut ist, aber es gibt bestimmte Fälle, in denen Synchronanrufe wirklich benötigt werden.
Zum Beispiel habe ich einen JavaScript-Code, den ich nicht umschreiben kann. Im Code gibt es synchrone Aufrufe zu einer bestimmten Methode. Für einige Debugging-Zwecke in der Entwicklerumgebung möchte ich diesen Aufruf abfangen, Informationen an den Server senden und warten, bis der Server antwortet. Dieser Abfangjäger funktioniert nicht in der Produktion. AFAIK, es gab eine Möglichkeit, dies mit NPAPI zu tun, aber jetzt ist es offiziell veraltet. Und sowohl Google Chrome als auch Mozilla Firefox bieten nur eine asynchrone Socket-API, sodass ich keine Chance habe, ein solches Abfangen durchzuführen. Eine andere Möglichkeit besteht darin, syncrhone XMLHttpRequest zu senden, die jedoch sehr langsam ist und eine HTTP-Verbindung und HTTP-Payload erfordert. Daher würde ich WebSocket vorziehen.
Ich habe einen anderen Eckfall, in dem ich IndexedDB aufrufen muss, aber es ist sehr schwer zu erklären. Leider ist die IndexedDB-Synchronisations-API nirgendwo implementiert.
Gibt es noch andere Hacks, um asynchrone Methoden synchron aufzurufen? Ich würde browserspezifische Hacks, Browser-Add-Ons, Plugins usw. akzeptieren. Oder weiß vielleicht jemand, wie er alle Komitees (und auch Browserentwickler), die Webstandards entwickeln, auffordern kann, mindestens WebWorker-Versionen der synchronen API einzubeziehen?
Ich weiß, dass Fragen zum synchronen Aufrufen von asynchronen Methoden oft gestellt wurden und die allgemeine Antwort lautet "Das ist eine schlechte Idee". Ich realisiere esallgemein es ist eine schlechte idee, aber in asicher Fälle, in denen wir wirklich die Freiheit brauchen, synchron zu telefonieren.