Timer
Fa parte della sezione Fondamenti di Node.js del percorso Node.js di Coddy. Lezione 19 di 24.
Un promemoria dovrebbe fare il conto alla rovescia sullo schermo, un passo alla volta, e poi fermarsi.
setInterval(fn, ms) esegue fn ogni ms millisecondi finché clearInterval(id) non lo ferma; setTimeout viene eseguito una sola volta. Un programma termina solo quando non rimane alcun timer, quindi un intervallo che non cancelli mai lo mantiene in esecuzione.
let lap = 1;
const id = setInterval(() => {
console.log(`Lap ${lap}`);
lap += 1;
if (lap > 3) {
clearInterval(id);
}
}, 500);Il terminale arresta un programma dopo 5 secondi: è così che ti accorgi di aver dimenticato clearInterval.
Sfida
Facileremind <n>stampa3,2,1, poi il testo della nota n, una riga ogni 200 ms, e il programma termina.- Un numero non valido risponde come
done:No note <word>e codice di uscita 1.
Esegui node notes.js remind 1, poi node notes.js remind 9.
Provalo tu
// Il tuo strumento per gli appunti inizia qui.
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);
}
Tutte le lezioni di Fondamenti di Node.js
1Eseguire JavaScript con Node
Ciao, NodeArgomenti della riga di comandoComandi