WebAssembly JavaScript Promise Integration (JSPI) gaat de origin-proefversie in

JavaScript Promise Integration (JSPI) is een API waarmee synchrone, sequentiële code die naar WebAssembly is gecompileerd, toegang krijgt tot asynchrone web-API's. Veel web-API's zijn gebaseerd op JavaScript -beloftes : in plaats van de gevraagde bewerking onmiddellijk uit te voeren, retourneren ze een belofte om dit te doen. Wanneer de actie uiteindelijk wordt uitgevoerd, roept de task runner van de browser alle callbacks met de belofte aan. JSPI haakt in op deze architectuur zodat een WebAssembly-applicatie kan worden onderbroken wanneer de belofte wordt geretourneerd en kan worden hervat wanneer de belofte is opgelost.

Van Chrome 123 tot en met Chrome 128 is JSPI beschikbaar als proefversie . Lees meer over JSPI in de blogpost Introducing the WebAssembly JavaScript Promise Integration API of in de specificatieversie .

Om beter te begrijpen hoe u deze functie kunt gebruiken, bekijkt u het volgende fragment van een C-programma dat de Fibonacci-reeks berekent door de toevoeging aan een JavaScript-functie uit te besteden.

// 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);
});

Om dit C-programma naar WebAssembly te compileren, gebruikt u de volgende opdracht. Hiervoor hebt u de Emscripten SDK nodig.

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

U kunt JSPI-ondersteuning vanuit JavaScript als volgt detecteren:

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

Een demo van JSPI uit het vorige codevoorbeeld is beschikbaar op Glitch en ook ingebed in het volgende. Je kunt de door Emscripten gegenereerde broncode bekijken als je wilt, maar de echt interessante code is het originele C-programma (door op deze link te klikken, download je de code).

Om JSPI uit te proberen met echte gebruikers van uw applicatie, meldt u zich aan voor de proefversie van Origin . Lees Aan de slag met proefversies van Origin voor instructies. Het JSPI-team kijkt uit naar uw feedback over de proefversie van Origin (zie stap 5 in de instructies), zodat de functie aan uw behoeften voldoet wanneer deze beschikbaar is!