Rolf b: Promises & Callbacks

Beitrag lesen

Das geht auf jeden Fall - aber an der Frage vorbei ;-)

TS will ein Promise in einem fremden Kontext nutzen - das gibt mal zumindest Javascript nicht her. Anders ist es - sagt die Wikipedia - in Sprachen, die für Nebenläufigkeit auf verteilten Systemen ausgelegt sind. Sie nennen dort die Sprachen E und Joule - von denen ICH noch nichts gehört habe. Angeblich kann die Laufzeitumgebung von E zwei Futures, deren Werte von der remote-Maschine stammen, unter gewissen Umständen in einem Roundtrip auswerten.

Das dürfte aber nur in einer einheitlichen Umgebung funktionieren, und es dürfte voraussetzen, dass die Kommunikation von der Laufzeitumgebung der Sprache durchgeführt wird.

Ist man mit der Hand am Arm unterwegs, wie in JavaScript, wo Promises "nur" eine abstrakte Hülle um beliebige asynchrone Vorgänge sind, fehlt diese Einheitlichkeit. Technisch ist es ja so, dass ein fremder Prozess, der die Antwort eines XMLHttpRequest abholen will, irgendwie auf den IP-Socket zugreifen muss, bei dem die Antwort auf den HTTP-Request ankommt. Dieser Socket "gehört" zunächst mal nicht ihm, d.h. man braucht eine Zwischenschicht, die vom XMLHttpRequest abstrahiert, den XMLHttpRequest über Seitenaufrufe hinweg am Leben hält und den Empfang der Response technisch abwickelt. Die diversen Prozesse (oder HTML-Seiten) können sich dann an die Zwischenschicht wenden und über irgendein Token die Daten abfragen. Wenn das Token serialiserbar ist (z.B. eine GUID als String), kann es von einem Prozess zum anderen übergeben werden. Aber ein Promise ist NICHT serialiserbar, weil für seine Funktion ein ganzer Schwarm von Closures erforderlich ist, die an den Kontext der laufenden HTML-Seite gebunden sind.

Ob die Kerne der Prozessoren, die man mittles "Promises" zum Arbeiten versklavt hat nun in einer Maschine wohnen oder in getrennten müsste doch im Prinzip egal sein, oder?

Ich glaube, dass diese Frage nun mit einem klaren NEIN beantwortet ist. Lokale und verteilte Programmierung benötigen grundsätzlich verschiedene Techniken. Oder hast Du schonmal aus dem Javascript im Browser eine PHP Funktion deines Servers aufgerufen? Einfach so, ohne RPC-Techniken?

Rolf