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.