Advertisement
Guest User

Untitled

a guest
Apr 26th, 2016
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. "use strict";
  2. var fs = require('fs');
  3.  
  4. function doStuff (path){
  5.     fs.readFile(path, function(err, text){
  6.         if(err){
  7.             console.error(err);
  8.             return;
  9.         }
  10.         var splitted = text.toString().split(process.platform === 'win32' ? '\r\n' : '\n'); // разбить файл на строчки
  11.         var list = []; // итоговый список всех анекдотов
  12.         var buf = []; // временный буфер для одного анекдота
  13.         var str; // "текущая" строка в цикле обхода всех строчек в файле.
  14.         while((str = splitted.shift()) !== undefined){ // пока в массиве есть строчки ...
  15.             if(str !== ''){ // если не пустая, то добавить строку анекдота во временный буфер
  16.                 buf.push(str); // то добавить строку анекдота во временный буфер
  17.             } else {
  18.                 list.push(buf); // иначе, добавить готовый анекдот в список всех анекдотов
  19.                 buf = []; // и сбросить временный буфер.
  20.             }
  21.         }
  22.         var handler = function(arr){ // фунция вывода, arr - массив строк одного анекдота
  23.             var str = arr.shift(); // забрать первую строчку из анекдота и удалить ее из массива
  24.             if(str){ // если массив не закончился
  25.                 console.log(str); // принтануть строку
  26.                 setTimeout(handler.bind(null, arr), 1000); // и сделать все тоже самое через секунду с оставшимися строчками анекдота, по сути это рекурсия
  27.             }
  28.         };
  29.  
  30.         handler(list[Math.floor(Math.random() * list.length)]); // выбор рандомного анекдота из всего списка и вызов функции вывода
  31.     });
  32. }
  33. doStuff('./file.txt');
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement