Integracja JavaScriptu WebAssembly (JSPI) rozpoczyna testowanie origin

Interfejs JavaScript Promise Integration (JSPI) to interfejs API, który umożliwia synchronicznemu, sekwencyjnemu kodom skompilowanym do WebAssembly uzyskiwanie dostępu do asynchronicznych interfejsów API. Wiele interfejsów API sieci jest tworzonych w języku JavaScript z użyciem obietnic: zamiast natychmiastowego wykonania żądanej operacji zwracają obietnicę, aby to zrobić. Gdy działanie zostanie w końcu wykonane, wykonawca zadań przeglądarki wywołuje wszystkie funkcje wywołania zwrotnego z obietnicą. JSPI korzysta z tej architektury, aby umożliwić zawieszenie aplikacji WebAssembly po zwróceniu obietnicy i jej wznowienie po jej spełnieniu.

Od Chrome 123 do Chrome 128 interfejs JSPI jest dostępny jako testowanie 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 tym fragmentem programu w języku C, który oblicza ciąg Fibonacciego, zlecając funkcję dodawania 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 Emscripten SDK.

emcc -O3 badfib.c -o index.html -s ASYNCIFY=2

Obsługę JSPI możesz wykryć w JavaScriptie w ten sposób:

if ('Suspender' in WebAssembly) {
  // JSPI is supported.
}

Demonstracja JSPI z poprzedniej próbki kodu jest dostępna na Glitch, a także umieszczona poniżej. Jeśli chcesz, możesz wyświetlić kod źródłowy wygenerowany przez Emscripten, ale interesujący kod to oryginalny program w języku C (kliknięcie tego linku spowoduje pobranie kodu).

Aby wypróbować JSPI z prawdziwymi użytkownikami aplikacji, zarejestruj się w ramach okresu próbnego wersji oryginalnej. Jeśli potrzebujesz instrukcji, przeczytaj artykuł Początkujący: okresy próbne pochodzenia. Zespół JSPI czeka na Twoją opinię na temat wersji próbnej (patrz krok 5 w instrukcjach), abyśmy mogli dostosować tę funkcję do Twoich potrzeb.