Integracja JavaScriptu WebAssembly (JSPI) rozpoczyna testowanie origin

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!