JavaScript Promise Integration (JSPI) ist eine API, mit der synchrone sequenzieller Code, der in WebAssembly kompiliert wurde, um auf asynchrone Web-APIs zuzugreifen. Viele Web-APIs werden als JavaScript erstellt promises (Versprechen): anstatt den angeforderten Vorgang sofort auszuführen, wird ein Promise um dies zu tun. Wenn die Aktion schließlich ausgeführt wird, wird der Task-Runner des Browsers ruft alle Callbacks mit dem Promise auf. JSPI wird in diese Architektur eingebunden, eine WebAssembly-Anwendung zu sperren, wenn das Promise zurückgegeben wird, und wird fortgesetzt, sobald das Versprechen gelöst ist.
Von Chrome 123 bis Chrome 128 JSPI ist als Ursprungstest verfügbar. Weitere Informationen zu SAMLI finden Sie im Blogpost. Einführung der WebAssembly JavaScript Promise Integration API oder aus der Spezifikationsentwurf.
Hier einige Tipps zur Verwendung dieser Funktion: Auszug aus einem C-Programm, das die Fibonacci-Folge durch Outsourcing der um eine JavaScript-Funktion zu ergänzen.
// 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);
});
Verwenden Sie den folgenden Befehl, um dieses C-Programm in WebAssembly zu kompilieren: erfordert das Emscripten SDK.
emcc -O3 badfib.c -o index.html -s ASYNCIFY=2
So können Sie die Unterstützung von JavaScript-Funktionen in JavaScript erkennen:
if ('Suspender' in WebAssembly) {
// JSPI is supported.
}
Eine Demo von JSPI aus dem vorherigen Codebeispiel ist in Glitch verfügbar und auch in die folgen. 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.
Um JSPI mit echten Nutzern Ihrer Anwendung zu testen, registrieren Sie sich für den Ursprungstest. Weitere Informationen finden Sie unter Erste Schritte mit Ursprungstests, wenn Sie eine Anleitung benötigen. Das JSPI-Team freut sich darauf, Ihren Ursprung zu erhalten. Feedback zur Testversion (siehe Schritt 5 im Anweisungen), damit die Funktion bei der Lieferung Ihren Anforderungen entspricht.