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 đồng bộ mã tuần tự được biên dịch lên WebAssembly để truy cập các API web không đồng bộ. Nhiều API web được tạo dựa trên JavaScript hứa hẹn: thay vì thực hiện ngay thao tác được yêu cầu, chúng lại trả về một lời hứa để làm điều đó. Khi hành động cuối cùng được thực hiện, trình chạy tác vụ của trình duyệt gọi bất kỳ lệnh gọi lại nào có lời hứa. JSPI sẽ liên kết với cấu trúc này để cho phép tạm ngưng một ứng dụng WebAssembly khi lời hứa được trả về và 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ề NetzDGI trong bài đăng trên blog Giới thiệu API Tích hợp lời hứa hẹn JavaScript WebAssembly hoặc từ bản nháp quy cách.

Để hiểu rõ hơn về cách sử dụng tính năng này, hãy cân nhắc những điều sau phần trích dẫn của chương trình C để tính toán dãy Fibonacci bằng cách thuê ngoài vào 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 sử dụng lệnh sau cần có SDK Emscripten.

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

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

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

Bản minh hoạ về JSONI từ mã mẫu trước đó là có trên Glitch và cũng được nhúng trong đang theo dõi. Bạn có thể thấy đoạn mã được tạo từ Emscripten mã nguồn nếu mà bạn muốn, nhưng mã thực sự thú vị là chương trình C ban đầu (nhấp vào đường liên kết này sẽ tải mã xuống).

Để dùng thử JSPI với người dùng thực tế của ứng dụng, hãy đăng ký dùng thử phiên bản gốc. Hãy đọc bài viết Bắt đầu sử dụng bản dùng thử theo nguyên gốc nếu bạn cần hướng dẫn. Nhóm NetzDG rất mong nhận được thông tin phản hồi của bạn phản hồi về bản dùng thử (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 khi được giao!