คุณสมบัติ writable.writableLength ใช้แสดงจำนวนไบต์หรือออบเจ็กต์ที่อยู่ในคิวและพร้อมจะถูกเขียน คุณสมบัตินี้ช่วยตรวจสอบข้อมูลตามสถานะจาก highWaterMark
ไวยากรณ์
writable.writableLength
ตัวอย่างที่ 1: การใช้งาน writableLength กับ cork()
สร้างไฟล์ชื่อ writableLength.js และคัดลอกโค้ดด้านล่าง:
node writableLength.js
// โปรแกรมสาธิตคุณสมบัติ writable.writableLength
const stream = require('stream');
// สร้าง Writable stream
const writable = new stream.Writable({
write: function(chunk, encoding, next) {
console.log(chunk.toString());
next();
}
});
// เขียนข้อมูล - ไม่อยู่ในคิวบัฟเฟอร์
writable.write('Hi - This data will not be counted');
// เรียกใช้ cork() เพื่อบังคับให้ข้อมูลถูกเก็บในบัฟเฟอร์
writable.cork();
// เขียนข้อมูลเพิ่มเติม (จะถูกเก็บในคิว)
writable.write('Welcome to TutorialsPoint !');
writable.write('SIMPLY LEARNING ');
writable.write('This data will be corked in the memory');
// แสดงความยาวของคิวข้อมูล
console.log(writable.writableLength);
ผลลัพธ์
C:\home\node>> node writableLength.js Hi - This data will not be counted 81
ข้อมูลที่ถูก cork() และอยู่ในคิวบัฟเฟอร์จะถูกนับและแสดงในคอนโซล
ตัวอย่างที่ 2: การใช้งาน uncork() เพื่อปล่อยข้อมูลจากบัฟเฟอร์
// โปรแกรมสาธิต writable.cork() และ writable.uncork()
const stream = require('stream');
const writable = new stream.Writable({
write: function(chunk, encoding, next) {
console.log(chunk.toString());
next();
}
});
writable.write('Hi - This data will not be counted');
writable.cork();
writable.write('Welcome to TutorialsPoint !');
writable.write('SIMPLY LEARNING ');
writable.write('This data will be corked in the memory');
// แสดงความยาวคิวก่อน uncork
console.log(writable.writableLength);
// ปล่อยข้อมูลจากบัฟเฟอร์
writable.uncork();
// แสดงความยาวคิวหลัง uncork
console.log(writable.writableLength);
ผลลัพธ์
C:\home\node>> node writableLength.js Hi - This data will not be counted 81 Welcome to TutorialsPoint ! SIMPLY LEARNING This data will be corked in the memory 0
หลังจากเรียก uncork() ข้อมูลจะถูกปล่อยออกจากบัฟเฟอร์ ทำให้คิวไม่มีข้อมูลเหลืออยู่ จึงคืนค่าความยาวเป็น 0