Timer
Teil des Abschnitts Node.js-Grundlagen der Node.js-Journey von Coddy. Lektion 19 von 24.
Eine Erinnerung sollte auf dem Bildschirm Schritt für Schritt herunterzählen und dann anhalten.
setInterval(fn, ms) führt fn alle ms Millisekunden aus, bis clearInterval(id) es anhält; setTimeout wird einmal ausgeführt. Ein Programm endet erst, wenn kein Timer mehr läuft. Ein Intervall, das du nie beendest, hält es also am Laufen.
let lap = 1;
const id = setInterval(() => {
console.log(`Lap ${lap}`);
lap += 1;
if (lap > 3) {
clearInterval(id);
}
}, 500);Das Terminal beendet ein Programm nach 5 Sekunden. So bemerkst du ein vergessenes clearInterval.
Aufgabe
Einfachremind <n>gibt3,2,1und dann den Text der Notiz n aus, jeweils eine Zeile alle 200 ms, und das Programm wird beendet.- Bei einer ungültigen Zahl lautet die Ausgabe wie bei
done:No note <word>und der Exit-Code ist 1.
Führe node notes.js remind 1 und dann node notes.js remind 9 aus.
Probier es selbst
// Dein Notizentool beginnt hier.
import { rmSync } from 'node:fs';
import path from 'node:path';
import { formatNote } from './format.js';
import stats from './legacy/stats.cjs';
import store from './store.js';
const [command, ...words] = process.argv.slice(2);
const text = words.join(' ');
const noteNumber = (word) => {
const n = Number(word);
if (!Number.isInteger(n) || n < 1 || n > store.notes.length) {
console.error(`No note ${word}`);
process.exit(1);
}
return n;
};
if (command === 'add') {
const n = await store.add(text);
console.log(`Saved note ${n}.`);
} else if (command === 'list') {
const owner = process.env.NOTES_OWNER ?? 'you';
console.log(`Notes for ${owner}`);
if (store.notes.length === 0) {
console.log('No notes yet');
}
const lines = store.notes.map((note, i) => formatNote(i + 1, note));
if (store.settings.sort === 'newest') {
lines.reverse();
}
lines.forEach((line) => console.log(line));
} else if (command === 'where') {
const file = path.join(process.cwd(), 'notes.json');
console.log(file);
console.log(path.basename(file));
} else if (command === 'stats') {
console.log(`${store.notes.length} notes, ${stats.countWords(store.notes)} words`);
} else if (command === 'done') {
const removed = await store.remove(noteNumber(words[0]));
console.log(`Done: ${removed}`);
} else if (command === 'clear') {
rmSync('notes.json', { force: true });
console.log('Deleted notes.json');
} else {
if (command) {
console.error(`Unknown command: ${command}`);
}
console.error('Usage: node notes.js <command> [words]');
process.exit(1);
}
Alle Lektionen in Node.js-Grundlagen
1JavaScript mit Node ausführen
Hallo, NodeKommandozeilenargumenteBefehle