Integrasi Promise JavaScript WebAssembly (JSPI) memasuki uji coba origin

JavaScript Promise Integration (JSPI) adalah API yang memungkinkan kode berurutan yang dikompilasi ke WebAssembly untuk mengakses API Web asinkron. Banyak API Web dibuat dalam hal promise JavaScript: bukan langsung melakukan operasi yang diminta, API tersebut menampilkan promise untuk melakukannya. Saat tindakan akhirnya dilakukan, runner tugas browser akan memanggil callback apa pun dengan promise. JSPI terhubung ke dalam arsitektur ini untuk mengizinkan aplikasi WebAssembly ditangguhkan ketika promise dikembalikan, dan dilanjutkan saat promise di-resolve.

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

Untuk mendapatkan pemahaman yang lebih baik tentang cara menggunakan fitur ini, pertimbangkan fragmen program C berikut yang menghitung urutan Fibonacci dengan melakukan outsourcing 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 adalah tersedia di Glitch dan juga disematkan di mengikuti. Anda dapat melihat skrip yang dibuat kode sumber jika yang diinginkan, tetapi kode yang sebenarnya menarik adalah program C asli (mengeklik tautan ini akan mengunduh kode).

Untuk mencoba JSPI dengan pengguna sebenarnya dari aplikasi Anda, daftar untuk uji coba origin. Baca Memulai uji coba origin jika Anda membutuhkan instruksi. Tim JSPI menantikan informasi origin Anda masukan uji coba (lihat Langkah 5 di instruksi) agar fitur ini sesuai dengan kebutuhan Anda saat dikirimkan!