JavaScript Promise Integration (JSPI) to interfejs API, który umożliwia sekwencyjny kod skompilowany do WebAssembly w celu uzyskania dostępu do asynchronicznych internetowych interfejsów API. Wiele Sieciowe interfejsy API są tworzone w języku JavaScript obietnice: zamiast natychmiast wykonać żądaną operację, zwracają obietnicę aby to zrobić. Po wykonaniu tego działania program uruchamiający zadania przeglądarki wywołuje wszystkie wywołania zwrotne z obietnicą. JSPI łączy się z tą architekturą pozwalają na zawieszenie aplikacji WebAssembly po zwróceniu obietnicy; oraz wznowiony po spełnieniu obietnic.
Od Chrome 123 do Chrome 128, Protokół JSPI jest dostępny w ramach testowania origin. Więcej informacji o JSPI znajdziesz w artykule na blogu [WebAssembly] Wprowadzenie do interfejsu JSPI (JavaScript Promise Integration API) lub w projektie specyfikacji.
Aby lepiej zrozumieć, jak korzystać z tej funkcji, zapoznaj się z tymi wskazówkami: typu C, który oblicza ciąg Fibonacciego poprzez przekazanie oprócz funkcji JavaScript.
// 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);
});
Aby skompilować ten program C na WebAssembly, użyj tego polecenia, które wymaga pakietu SDK Emscripten.
emcc -O3 badfib.c -o index.html -s ASYNCIFY=2
Wykrywanie funkcji JSPI w języku JavaScript w ten sposób:
if ('Suspender' in WebAssembly) {
// JSPI is supported.
}
Wersja demonstracyjna JSPI z poprzedniego przykładowego kodu to dostępne w usłudze Glitch, a także umieszczone w następujących po sobie. Wygenerowany przez Emscripten kodu źródłowego, jeśli ale tak naprawdę interesujący kod to program oryginalny w C (kliknięcie tego linku spowoduje pobranie kodu).
Aby wypróbować JSPI wśród prawdziwych użytkowników aplikacji, zarejestruj się do testowania origin. Zapoznaj się z artykułem Pierwsze kroki z testami origin, jeśli: Potrzebuję instrukcji. Zespół JSPI czeka na Twoje źródło opinii z okresu próbnego (zobacz krok 5 w instrukcji), tak aby w momencie wysyłki funkcja odpowiadała Twoim potrzebom!