Bagaimanakah Node.js melaksanakan perkongsian konteks sumber tak segerak? Artikel berikut akan memperkenalkan kepada anda cara Node melaksanakan perkongsian konteks sumber tak segerak Mari kita bincangkan tentang penggunaan perkongsian konteks sumber tak segerak untuk kita.
Perkongsian konteks sumber tak segerak bermaksud berkongsi data konteks dalam kitaran hayat permintaan rangkaian atau rantaian panggilan sumber tak segerak.
Sebelum menjawab soalan ini, kita mesti memahami dahulu apa itu sumber tak segerak.
Sumber tak segerak boleh difahami sebagai objek dengan panggilan balik, seperti tetapi tidak terhad kepada Janji, Tamat Masa, TCPWrap, UDP, dsb. Untuk butiran, lihat Senarai jenis sumber tak segerak.
Takrifan rasmi adalah seperti berikut:
Sumber tak segerak mewakili objek dengan panggilan balik yang berkaitan ini boleh dipanggil beberapa kali, seperti acara 'sambungan' dalam net .createServer( ), atau hanya sekali seperti dalam fs.open(Sesuatu sumber juga boleh ditutup sebelum panggilan balik dipanggil.
Node.js Ciri ini masih merupakan ciri percubaan sebelum 16.4.0 dan telah stabil sejak 16.4.0.
AsyncLocalStorage boleh berkongsi data dalam rantaian operasi tak segerak. Instance AsyncLocalStorage asyncLocalStorage mempunyai kaedah utama berikut:const store = { id: 1 }; // Replaces previous store with the given store object asyncLocalStorage.enterWith(store); asyncLocalStorage.getStore(); // Returns the store object someAsyncOperation(() => { asyncLocalStorage.getStore(); // Returns the same object });
Output:
Oleh asyncLocalStorage Dalam fungsi asynchronous yang sama yang dijalankan oleh .run, fungsi runA dan runB akan dijalankan dan runA dan runB boleh mengakses data konteks yang sama.
runA 8f19ebef-58d7-4b1a-8b9b-46d158beb5d2 2022/5/24 20:26:17 this is a log message runB 8f19ebef-58d7-4b1a-8b9b-46d158beb5d2 2022/5/24 20:26:17 this is a log message
Isu prestasi
Kuzzle
, menggunakan AsyncLocalStorage akan menyebabkan kehilangan prestasi tambahan sebanyak 8% Sudah tentu, senario perniagaan yang berbeza mungkin mempunyai prestasi yang berbeza. Jika anda bimbang tentang bahagian prestasi ini, anda juga boleh menambah ujian perbandingan pada perniagaan anda untuk menguji kesan prestasi tertentu. Senario aplikasi---- | Log with AsyncLocalStorage | Log classic | difference |
---|---|---|---|
req/s | 2613 | 2842 | 〜8% |
tutorial nodejs
!Atas ialah kandungan terperinci Apakah sumber tak segerak? Analisis ringkas kaedah Node untuk merealisasikan perkongsian konteks sumber tak segerak. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!