Integracja JavaScriptu WebAssembly (JSPI) rozpoczyna testowanie origin

JSPI (JavaScript Promise Integration) to interfejs API, który umożliwia synchronicznemu kodowi sekwencyjnem skompilowanemu w WebAssembly dostęp do asynchronicznych internetowych interfejsów API. Wiele internetowych interfejsów API opiera się na obietnicach JavaScriptu: zamiast natychmiast wykonywać żądaną operację, zwracają obietnicę wykonania tego działania. Gdy działanie zostanie wykonane, mechanizm wykonujący zadania w przeglądarce wywołuje wszelkie wywołania zwrotne z obietnicą. JSPI łączy się z tą architekturą, aby umożliwić zawieszenie aplikacji WebAssembly po zwróceniu obietnicy i jej wznowienie po zrealizowaniu obietnicy.

Od Chrome 123 do wersji 128 JSPI jest dostępny w ramach testowania origin. Więcej informacji o JSPI znajdziesz w poście na blogu Introduction the WebAssembly JavaScript Promise Integration API lub z wersji roboczej specyfikacji.

Aby lepiej zrozumieć, jak korzystać z tej funkcji, zapoznaj się z poniższym fragmentem programu C, który oblicza sekwencję Fibonacci’ego przez zlecenie 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 w języku C do WebAssembly, użyj poniższego polecenia, które wymaga pakietu Emscripten SDK.

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

Obsługa JSPI możesz wykrywać w języku JavaScript w ten sposób:

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

Wersja demonstracyjna JSPI z poprzedniego przykładowego kodu jest dostępna w Glitch oraz umieszczona w tym przykładzie. Jeśli chcesz, możesz zobaczyć kod źródłowy wygenerowany w języku Emscripten, ale w rzeczywistości ciekawy kod to oryginalny program C (kliknięcie tego linku spowoduje pobranie kodu).

Aby wypróbować JSPI w pracy z prawdziwymi użytkownikami aplikacji, zarejestruj się w wersji próbnej origin. Jeśli potrzebujesz instrukcji, przeczytaj artykuł Pierwsze kroki z testowaniem origin. Zespół JSPI czeka na Twoją opinię na temat wersji próbnej origin (patrz krok 5 w instrukcjach), aby funkcja ta zaspokoiła Twoje potrzeby w momencie wysyłki.