Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- "use strict";
- var fs = require('fs');
- function doStuff (path){
- fs.readFile(path, function(err, text){
- if(err){
- console.error(err);
- return;
- }
- var splitted = text.toString().split(process.platform === 'win32' ? '\r\n' : '\n'); // разбить файл на строчки
- var list = []; // итоговый список всех анекдотов
- var buf = []; // временный буфер для одного анекдота
- var str; // "текущая" строка в цикле обхода всех строчек в файле.
- while((str = splitted.shift()) !== undefined){ // пока в массиве есть строчки ...
- if(str !== ''){ // если не пустая, то добавить строку анекдота во временный буфер
- buf.push(str); // то добавить строку анекдота во временный буфер
- } else {
- list.push(buf); // иначе, добавить готовый анекдот в список всех анекдотов
- buf = []; // и сбросить временный буфер.
- }
- }
- var handler = function(arr){ // фунция вывода, arr - массив строк одного анекдота
- var str = arr.shift(); // забрать первую строчку из анекдота и удалить ее из массива
- if(str){ // если массив не закончился
- console.log(str); // принтануть строку
- setTimeout(handler.bind(null, arr), 1000); // и сделать все тоже самое через секунду с оставшимися строчками анекдота, по сути это рекурсия
- }
- };
- handler(list[Math.floor(Math.random() * list.length)]); // выбор рандомного анекдота из всего списка и вызов функции вывода
- });
- }
- doStuff('./file.txt');
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement