Integrasi Promise JavaScript WebAssembly (JSPI) memasuki uji coba origin

Integrasi Promise JavaScript (JSPI) adalah API yang memungkinkan kode berurutan sinkron yang dikompilasi ke WebAssembly untuk mengakses Web API asinkron. Banyak Web API dibuat dalam kaitannya dengan promise JavaScript: bukan langsung menjalankan operasi yang diminta, API tersebut akan menampilkan promise untuk melakukannya. Saat tindakan akhirnya dilakukan, runner tugas browser akan memanggil callback apa pun dengan promise. JSPI terhubung ke arsitektur ini agar aplikasi WebAssembly dapat ditangguhkan saat promise ditampilkan, dan dilanjutkan setelah promise diselesaikan.

Mulai Chrome 123 hingga Chrome 128, JSPI tersedia sebagai uji coba origin. Pelajari JSPI lebih lanjut di postingan blog Memperkenalkan Promise Integration API WebAssembly JavaScript atau dari draf spesifikasi.

Untuk mendapatkan pemahaman yang lebih baik tentang cara menggunakan fitur ini, pertimbangkan kutipan program C berikut yang menghitung urutan Fibonacci dengan mengalihdayakan penambahan ke fungsi 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);
});

Untuk mengompilasi program C ini ke WebAssembly, gunakan perintah berikut, yang memerlukan Emscripten SDK.

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

Anda dapat mendeteksi fitur dukungan JSPI dari JavaScript sebagai berikut:

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

Demo JSPI dari contoh kode sebelumnya tersedia di Glitch dan juga disematkan di bagian berikut. Anda dapat melihat kode sumber yang dihasilkan Emscripten jika ingin, tetapi kode yang sebenarnya menarik adalah program C asli (mengklik link ini akan mendownload kode).

Untuk mencoba JSPI dengan pengguna sebenarnya yang menggunakan aplikasi Anda, daftar ke uji coba origin. Baca Mulai menggunakan uji coba origin jika Anda memerlukan petunjuk. Tim JSPI menantikan masukan uji coba origin Anda (lihat Langkah 5 dalam petunjuk) agar fitur tersebut sesuai dengan kebutuhan Anda saat dikirimkan.