المؤقّتات (Timers)
دوال عامّة لجدولة التنفيذ (نفس المتصفّح):
setTimeout(() => {
console.log("بعد ثانيتين");
}, 2000);
const id = setInterval(() => {
console.log("كل ثانية");
}, 1000);
clearInterval(id); // لإيقافه
setImmediate و process.nextTick
خاصّتان بـ Node لجدولة دقيقة ضمن حلقة الأحداث:
setImmediate(() => console.log("في الدورة التالية"));
process.nextTick(() => console.log("قبل أي شيء آخر"));
وحدة readline
لقراءة المدخلات من المستخدم سطرًا سطرًا في تطبيقات الطرفية:
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
rl.question("ما اسمك؟ ", (name) => {
console.log(`أهلًا ${name}`);
rl.close();
});
وحدة util
أدوات مساعدة متنوّعة:
const util = require("util");
const fs = require("fs");
// تحويل دالة ردّ قديمة إلى وعد
const readFile = util.promisify(fs.readFile);
async function load() {
const data = await readFile("file.txt", "utf-8");
console.log(data);
}
util.promisify مفيدة لتحديث الدوال القديمة (نمط الردّ) إلى async/await.
وحدة dns
لحلّ أسماء النطاقات إلى عناوين IP:
const dns = require("dns");
dns.lookup("google.com", (err, address) => {
console.log("العنوان:", address);
});
وحدة assert
للتحقّق من الفرضيات (تُستخدم في الاختبارات):
const assert = require("assert");
assert.strictEqual(2 + 2, 4); // يمرّ
assert.strictEqual(2 + 2, 5); // يرمي AssertionError
أخطاء شائعة
- نسيان
clearIntervalفيستمر المؤقّت ويمنع إغلاق التطبيق. - نسيان
rl.close()فيبقى البرنامج معلّقًا بانتظار مدخلات.
🎯 التالي: مفهوم الـ Middleware في Express.