WebAssembly JavaScript Promise Integration (JSPI) bước vào bản dùng thử theo nguyên gốc

JavaScript Promise Integration (JSPI) là một API cho phép mã tuần tự đồng bộ được biên dịch thành WebAssembly để truy cập vào các API web không đồng bộ. Nhiều API web được tạo theo lời hứa của JavaScript: thay vì thực hiện ngay thao tác được yêu cầu, chúng sẽ trả về lời hứa sẽ thực hiện thao tác đó. Khi thao tác được thực hiện, trình chạy tác vụ của trình duyệt sẽ gọi bất kỳ lệnh gọi lại nào có lời hứa. DEXI nối vào cấu trúc này để cho phép tạm ngưng ứng dụng WebAssembly khi lời hứa được trả về và được tiếp tục khi lời hứa được giải quyết.

Từ Chrome 123 cho đến Chrome 128, JSPI được cung cấp dưới dạng bản dùng thử theo nguyên gốc. Tìm hiểu thêm về IMEI trong bài đăng trên blog Giới thiệu về API tích hợp Promise Integration (API Tích hợp cam kết) của WebAssembly JavaScript hoặc từ bản nháp thông số kỹ thuật.

Để hiểu rõ hơn về cách sử dụng tính năng này, hãy xem xét phần trích dẫn sau đây của chương trình C tính trình tự Fibonacci bằng cách thuê ngoài phần bổ sung cho hàm 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);
});

Để biên dịch chương trình C này thành WebAssembly, hãy dùng lệnh sau đây (cần có Emscripten SDK).

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

Bạn có thể phát hiện tính năng hỗ trợ DEXI từ JavaScript như sau:

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

Bản minh hoạ DEXI từ mã mẫu trước đó có sẵn trên Glitch và cũng được nhúng trong các nội dung sau. Bạn có thể xem mã nguồn do Emscripten tạo nếu muốn, nhưng mã thực sự thú vị là chương trình C gốc (nhấp vào đường liên kết này sẽ tải mã xuống).

Để dùng thử DEXI với người dùng thực của ứng dụng, hãy đăng ký bản dùng thử theo nguyên gốc. Hãy đọc bài viết Bắt đầu dùng bản dùng thử theo nguyên gốc nếu bạn cần hướng dẫn. Nhóm DEXI rất mong nhận được ý kiến phản hồi của bạn về bản dùng thử theo nguyên gốc (xem Bước 5 trong hướng dẫn) để tính năng này phù hợp với nhu cầu của bạn trong quá trình phát hành!