Giới thiệu
Node.js là một môi trường thời gian chạy phía máy chủ nguồn mở phổ biến cho phép các nhà phát triển xây dựng các ứng dụng web hiệu suất cao, có thể mở rộng. Node.js cung cấp một số mô-đun và API tích hợp giúp dễ dàng phát triển các ứng dụng phức tạp. Trong bài viết này, chúng ta sẽ khám phá khái niệm lưu trữ cục bộ không đồng bộ trong Node.js.
Bộ nhớ cục bộ Async là gì?
Lưu trữ cục bộ không đồng bộ là một tính năng của Node.js cho phép các nhà phát triển lưu trữ dữ liệu trong bối cảnh hoạt động không đồng bộ. Điều này có nghĩa là dữ liệu được lưu trữ bằng bộ nhớ cục bộ không đồng bộ có thể được truy cập bởi bất kỳ chức năng nào được thực thi trong cùng ngữ cảnh của hoạt động không đồng bộ. Bộ nhớ cục bộ không đồng bộ rất hữu ích khi bạn cần chia sẻ dữ liệu giữa các phần khác nhau trong ứng dụng của mình mà không cần phải chuyển dữ liệu đó một cách rõ ràng dưới dạng đối số hàm hoặc biến toàn cục.
Lưu trữ cục bộ không đồng bộ được triển khai bằng hai phương thức cốt lõi: asyncLocalStorage.getStore() và store.run(). Phương thức asyncLocalStorage.getStore() trả về một tham chiếu đến kho lưu trữ cục bộ hiện tại cho ngữ cảnh thực thi hiện tại. Phương thức store.run() chấp nhận chức năng gọi lại được thực thi trong ngữ cảnh của kho lưu trữ cục bộ hiện tại.
Cách sử dụng Bộ nhớ cục bộ không đồng bộ trong Node.js Để sử dụng bộ nhớ cục bộ không đồng bộ trong Node.js, trước tiên chúng ta cần cài đặt mô-đun async_hooks. Mô-đun này cung cấp một tập hợp các chức năng cho phép chúng tôi tạo và quản lý các bối cảnh không đồng bộ. Dưới đây là ví dụ về cách sử dụng bộ nhớ cục bộ không đồng bộ để lưu trữ thông tin người dùng trong ngữ cảnh của yêu cầu HTTP:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | const async_hooks = require('async_hooks'); const { AsyncLocalStorage } = require('async_hooks'); // Create a new AsyncLocalStorage instance const asyncLocalStorage = new AsyncLocalStorage(); // Create a new HTTP server const server = require('http').createServer((request, response) => { // Store user information in the context of the current request asyncLocalStorage.run({ userId: 123 }, () => { // Retrieve the user information from the context of the current request const { userId } = asyncLocalStorage.getStore(); // Do something with the user information ... }); }); // Start the server on port 3000 server.listen(3000); |
Trong ví dụ này, chúng tôi tạo một phiên bản AsyncLocalStorage mới và sử dụng nó để lưu trữ thông tin người dùng trong ngữ cảnh của một yêu cầu HTTP. Sau đó, chúng tôi truy xuất thông tin người dùng từ ngữ cảnh của yêu cầu hiện tại bằng phương thức getStore().
Phần kết luận
Lưu trữ cục bộ không đồng bộ là một tính năng mạnh mẽ của Node.js cho phép các nhà phát triển lưu trữ dữ liệu trong bối cảnh hoạt động không đồng bộ. Điều này có thể hữu ích khi bạn cần chia sẻ dữ liệu giữa các phần khác nhau trong ứng dụng của mình mà không cần phải chuyển dữ liệu đó một cách rõ ràng dưới dạng đối số hàm hoặc biến toàn cục. Bằng cách sử dụng mô-đun async_hooks và lớp AsyncLocalStorage, bạn có thể dễ dàng triển khai bộ nhớ cục bộ không đồng bộ trong các ứng dụng Node.js của mình.