JavaScript Promise Integration (JSPI) es una API que permite la integración código secuencial compilado en WebAssembly para acceder a APIs web asíncronas. Muchos Las APIs web se crean en términos de JavaScript promesas: en lugar de realizar inmediatamente la operación solicitada, devuelve una promesa para hacerlo. Cuando finalmente se realiza la acción, el ejecutor de tareas del navegador Invoca cualquier devolución de llamada con la promesa. JSPI se vincula a esta arquitectura para permitir que se suspenda una aplicación de WebAssembly cuando se devuelva la promesa y que deben reanudarse cuando se resuelva la promesa.
De Chrome 123 a Chrome 128, JSPI está disponible como una prueba de origen. Más información sobre JSPI en la entrada de blog Presentación de la API de WebAssembly JavaScript Promise Integration o en la borrador de especificaciones.
Para comprender mejor cómo usar esta función, considera lo siguiente: extracto de un programa en C que calcula la secuencia de Fibonacci mediante la tercerización de la además de una función de 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);
});
Para compilar este programa de C en WebAssembly, usa el siguiente comando, que requiere el SDK de Emscripten.
emcc -O3 badfib.c -o index.html -s ASYNCIFY=2
Puedes detectar la compatibilidad con JSPI en JavaScript de la siguiente manera:
if ('Suspender' in WebAssembly) {
// JSPI is supported.
}
Se incluye una demostración de JSPI de la muestra de código anterior. disponibles en Glitch y también incorporados en siguientes. Puedes ver los campos generados código fuente si pero el código realmente interesante es programa C original (si haces clic en este vínculo, se descargará el código).
Para probar JSPI con usuarios reales de tu aplicación, regístrate en la prueba de origen. Lee Cómo comenzar a usar las pruebas de origen si necesitas instrucciones. El equipo de JSPI espera recibir tus datos de origen comentarios de la prueba (consulta el Paso 5 de la instrucciones) para que la función se adapte a tus necesidades en el momento del envío.