JavaScript Promise Integration (JSPI) ist eine API, mit der synchronen sequenziellen Code, der in WebAssembly kompiliert wurde, auf asynchrone Web-APIs zugreifen kann. Viele Web-APIs sind in JavaScript-Promises geschrieben: Anstatt den angeforderten Vorgang sofort auszuführen, geben sie ein Promise zurück, um dies zu tun. Wenn die Aktion schließlich ausgeführt wird, ruft der Task-Runner des Browsers alle Callbacks mit dem Promise auf. JSPI greift auf diese Architektur zurück, um eine WebAssembly-Anwendung anzuhalten, wenn das Versprechen zurückgegeben wird, und fortzusetzen, wenn das Versprechen erfüllt wird.
Von Chrome 123 bis Chrome 128 ist JSPI als Ursprungstest verfügbar. Weitere Informationen zu JSPI finden Sie im Blogpost zur Einführung der WebAssembly JavaScript Promise Integration API oder im Spezifikationsentwurf.
Um die Verwendung dieser Funktion besser zu verstehen, sehen Sie sich den folgenden Ausschnitt aus einem C-Programm an, in dem die Fibonacci-Folge berechnet wird, indem die Addition an eine JavaScript-Funktion ausgelagert wird.
// This is C code.
long promiseFib(long x) {
if (x == 0)
return 0;
if (x == 1)
return 1;
// This is where the C code calls asynchronous JavaScript.
return promiseAdd(promiseFib(x - 1), promiseFib(x - 2));
}
// Addition artificially wrapped in a Promise.
EM_ASYNC_JS(long, promiseAdd, (long x, long y), {
// This is asynchronous JavaScript code.
return Promise.resolve(x+y);
});
Um dieses C-Programm in WebAssembly zu kompilieren, verwenden Sie den folgenden Befehl, für den das Emscripten SDK erforderlich ist.
emcc -O3 badfib.c -o index.html -s ASYNCIFY=2
So kannst du die JSPI-Unterstützung in JavaScript prüfen:
if ('Suspender' in WebAssembly) {
// JSPI is supported.
}
Eine Demo von JSPI aus dem vorherigen Codebeispiel ist auf Glitch und auch unten eingebettet. Sie können sich den von Emscripten generierten Quellcode ansehen, aber der wirklich interessante Code ist das ursprüngliche C-Programm. Wenn Sie auf diesen Link klicken, wird der Code heruntergeladen.
Wenn Sie vSphere mit echten Nutzern Ihrer Anwendung ausprobieren möchten, registrieren Sie sich für den Ursprungstest. Eine Anleitung finden Sie im Hilfeartikel Erste Schritte mit Ursprungstests. Das JSPI-Team freut sich auf Ihr Feedback zum ursprünglichen Test (siehe Schritt 5 in der Anleitung), damit die Funktion bei der Auslieferung Ihren Anforderungen entspricht.