Menu
CoddyTech

Timer

Termasuk bagian Dasar-Dasar Node.js dalam perjalanan Node.js di Coddy. Pelajaran 19 dari 24.

Pengingat harus menghitung mundur di layar, selangkah demi selangkah, lalu berhenti.

setInterval(fn, ms) menjalankan fn setiap ms milidetik hingga clearInterval(id) menghentikannya; setTimeout berjalan sekali. Program berakhir hanya saat tidak ada timer yang tersisa, jadi interval yang tidak pernah kamu hentikan akan membuatnya terus berjalan.

let lap = 1;
const id = setInterval(() => {
    console.log(`Lap ${lap}`);
    lap += 1;
    if (lap > 3) {
        clearInterval(id);
    }
}, 500);

Terminal menghentikan program setelah 5 detik, sehingga kamu bisa mengetahui jika lupa memanggil clearInterval.

challenge icon

Tantangan

Mudah
  • remind <n> mencetak 3, 2, 1, lalu teks catatan n, satu baris setiap 200 ms, dan program berakhir.
  • Angka yang tidak valid memberikan respons seperti done: No note <word> dan kode keluar 1.

Jalankan node notes.js remind 1, lalu node notes.js remind 9.

Coba sendiri

// Alat catatanmu dimulai di sini.
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);
}

Semua pelajaran di Dasar-Dasar Node.js

Latihan sendiri: Playground Express