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

JavaScript Promise Integration (JSPI), WebAssembly'de derlenen eşzamanlı sıralı kodun eşzamansız Web API'lerine erişmesini sağlayan bir API'dir. Pek çok Web API'si JavaScript vaatleri çerçevesinde oluşturulur: İstenen işlemi hemen gerçekleştirmek yerine bunu yapma sözü döndürürler. İşlem son olarak gerçekleştirildiğinde, tarayıcının görev çalıştırıcısı sözüyle tüm geri çağırmaları çağırır. JSPI, sözü yerine getirildiğinde WebAssembly uygulamasının askıya alınmasına ve söz konusu çözüme kavuşturulduğunda devam ettirilmesine izin vermek için bu mimariye bağlanır.

Chrome 123'ten Chrome 128'e kadar JSPI, kaynak denemesi olarak kullanılabilir. JSPI hakkında daha fazla bilgiyi WebAssembly JavaScript Promise Integration API'nin Tanıtımı başlıklı blog yayınında veya özellik taslağında bulabilirsiniz.

Bu özelliğin nasıl kullanılacağını daha iyi anlamak için, bir JavaScript işlevine yapılan eklemede dış kaynak kullanarak Fibonacci dizisini hesaplayan bir C programından aşağıdaki alıntıyı 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'de derlemek için Emscripten SDK'yı gerektiren aşağıdaki komutu kullanın.

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

JSPI desteğini JavaScript'ten özellik algılama aşağıdaki şekilde yapılabilir:

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

Önceki kod örneğine ait JSPI'nın demosunu Glitch'te bulabilirsiniz ve aşağıdaki içine de yerleştirilmiştir: İsterseniz Emscripten tarafından oluşturulan kaynak kodu görebilirsiniz, ancak asıl ilginç kod orijinal C programıdır (bu bağlantıyı tıkladığınızda kod indirilir).

JSPI'yı uygulamanızın gerçek kullanıcılarıyla denemek için kaynak deneme sürümüne kaydolun. Talimatları görmek için Kaynak denemelerini kullanmaya başlama başlıklı makaleyi okuyun. JSPI ekibi, ilk kullanıma sunulduğunda özellik ile ilgili gereksinimlerinizi karşılayabilmek için kaynak denemesiyle ilgili geri bildiriminizi (talimatlardaki 5. Adım'a bakın) almayı sabırsızlıkla beklemektedir.