La phase d'évaluation de l'intégration de WebAssembly JavaScript Promise (JSPI)

JavaScript Promise Integration (JSPI) est une API qui permet une gestion code séquentiel compilé dans WebAssembly pour accéder à des API Web asynchrones. Beaucoup Les API Web sont conçues en fonction de JavaScript promesses: au lieu d'exécuter immédiatement l'opération demandée, il renvoie une promesse pour ce faire. Une fois l'action terminée, l'exécuteur de tâches du navigateur invoque tous les rappels avec la promesse. J'accède à cette architecture autoriser la suspension d'une application WebAssembly lorsque la promesse est renvoyée, et être réactivées lorsque la promesse est résolue.

De Chrome 123 à Chrome 128, JSPI est disponible en phase d'évaluation. En savoir plus sur la page JSPI dans l'article de blog Présentation de l'API d'intégration WebAssembly JavaScript Promise ou à partir de projet de spécification.

Pour mieux comprendre comment utiliser cette fonctionnalité, tenez compte des éléments suivants extrait d'un programme en C qui calcule la suite de Fibonacci en externalisant la en plus d'une fonction 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);
});

Pour compiler ce programme C en WebAssembly, utilisez la commande suivante, qui nécessite le SDK Emscripten.

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

Pour détecter la prise en charge des pages JSPI à partir de JavaScript, procédez comme suit:

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

Voici une démonstration de JSPI à partir de l'exemple de code précédent : disponible sur Glitch et intégré suivis. Vous pouvez voir la boîte de dialogue générée par Emscripten code source si mais le code le plus intéressant est programme C original (le code est téléchargé en cliquant sur ce lien).

Pour tester JSPI avec des utilisateurs réels de votre application, vous inscrire à la phase d'évaluation. Consultez Premiers pas avec les phases d'évaluation si vous si vous avez besoin d'instructions. L'équipe JSPI attend vos informations d'origine (voir l'étape 5 de la instructions) afin que la fonctionnalité réponde à vos besoins dès son expédition.