تدخل تقنية WebAssembly JavaScript Promise Integration (JSPI) في مرحلة التجربة والتقييم.

تكامل JavaScript وعد (JSPI) هو واجهة برمجة تطبيقات تتيح المزامنة رمز تسلسلي تم تجميعه في WebAssembly للوصول إلى واجهات برمجة تطبيقات الويب غير المتزامنة. نتائج عديدة تمت صياغة واجهات برمجة تطبيقات الويب وفقًا لـ JavaScript الوعود: وبدلاً من تنفيذ العملية المطلوبة على الفور، يعمد إلى تقديم وعد القيام بذلك. وعند تنفيذ الإجراء في النهاية، يعرض مشغِّل المهام في المتصفّح أي استدعاءات مع هذا الوعد. يجذب JSPI بهذه البنية السماح بتعليق تطبيق WebAssembly عند إرجاع الوعد وسيتم استئنافه عند الالتزام بالوعد.

من الإصدار 123 من Chrome حتى الإصدار 128، تتوفّر واجهة برمجة التطبيقات JSPI كإصدار تجريبي. مزيد من المعلومات حول لغة JSPI في مشاركة المدونة التعرّف على واجهة برمجة التطبيقات WebAssembly JavaScript Promise Integration API أو من صفحة مسودة المواصفات.

لفهم كيفية استخدام هذه الميزة بشكل أفضل، اطّلِع على العبارة التالية المقتطفة من برنامج C الذي يحسب تسلسل Fibonacci من خلال الاستعانة بمصادر خارجية للقيام بعملية الإضافة في دالة 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);
});

لتجميع برنامج C هذا في WebAssembly، استخدم الأمر التالي، تتطلّب حزمة تطوير البرامج لمنصة Emscripten.

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

يمكنك استكشاف دعم JSPI من خلال JavaScript على النحو التالي:

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

يتوفّر عرض توضيحي لـ JSPI من نموذج التعليمات البرمجية السابق على Glitch، كما أنّه مضمّن في الخطوات التالية. يمكنك الاطّلاع على رمز الاستجابة السريعة الذي أنشأه Emscripten رمز المصدر إذا التي تريدها، ولكن الكود المثير للاهتمام حقًا هو برنامج C الأصلي (سيؤدي النقر على هذا الرابط إلى تنزيل الرمز).

لتجربة لغة JSPI مع مستخدمين حقيقيين لتطبيقك، الاشتراك في مرحلة التجربة والتقييم اطّلِع على البدء باستخدام تجارب المصدر إذا كنت تحتاج إلى تعليمات. يتطلع فريق JSPI إلى تلقّي ملاحظاتك بشأن الإصدار التمهيدي (اطّلِع على الخطوة 5 في التعليمات) كي تتوافق الميزة مع احتياجاتك عند طرحها.