WebAssembly JavaScript Promise Integration (JSPI) başlangıç denemesine giriyor

JavaScript Promise Integration (JSPI), WebAssembly'ye derlenen eşzamanlı sıralı kodun eşzamansız Web API'lerine erişmesine olanak tanıyan bir API'dir. Birçok web API'si JavaScript vaatleri açısından hazırlanır: İstenen işlemi hemen gerçekleştirmek yerine, bunu yapma vaadi döndürürler. İşlem nihayet gerçekleştirildiğinde, tarayıcının görev çalıştırıcısı, vaatle birlikte geri çağırmaları çağırır. JSPI, bu mimariye bağlanarak söz döndürüldüğünde WebAssembly uygulamasının askıya alınmasına ve söz yerine getirildiğinde devam ettirilmesine olanak tanır.

Chrome 123'ten Chrome 128'e kadar JSPI, kaynak denemesi olarak kullanılabilir. JSPI hakkında daha fazla bilgiyi Introducing the WebAssembly JavaScript Promise Integration API (WebAssembly JavaScript Promise Integration API'yi Tanıtıyoruz) başlıklı blog yayınında veya specification draft (şartname taslağı) bölümünde bulabilirsiniz.

Bu özelliği nasıl kullanacağınızı daha iyi anlamak için, toplamayı bir JavaScript işlevine yaptırarak Fibonacci dizisini hesaplayan bir C programının aşağıdaki alıntısını inceleyin.

// 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);
});

Bu C programını WebAssembly'ye derlemek için Emscripten SDK'sını gerektiren aşağıdaki komutu kullanın.

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

JavaScript'ten JSPI desteğini aşağıdaki gibi özellik algılayabilirsiniz:

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

JSPI'yi uygulamanızın gerçek kullanıcılarıyla denemek için kaynağın denemesine kaydolun. Talimatlara ihtiyacınız varsa Get started with origin trials (Kaynak denemelerini kullanmaya başlama) başlıklı makaleyi okuyun. JSPI ekibi, özelliğin kullanıma sunulduğunda ihtiyaçlarınıza uygun olması için kaynak denemesi geri bildiriminizi (talimatlardaki 5. adım'a bakın) bekliyor.