Skip to content

Grehhov/javascript-tasks-9

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Задача к лекции «Асинхронность» - «Котофайлы»

Общие требования

Мы очень хотим, чтобы код вы написали сами, а не пользовались внешними библиотеками.

Прежде чем отправлять решение, проверьте его на соответствие общим требованиям.

Когда вы создадите или обновите пулл-реквест, он автоматически будет проверен на соответствие кодстайлу и базовую работоспособность. Результаты вы увидите внизу:

Если всё хорошо:
2015-10-08_1845

Если всё плохо:
2015-10-08_1841

Проверить можно и вручную:

npm install
npm test

// В результате выведутся ошибки, если они есть

Задача

Интернет-магазин моей бабуленьки набирает популярность, количество котиков непрерывно растёт и пора начать где-то хранить данные о них. Бабуленька любит всё старомодное, поэтому хранить мы будем в старых-добрых файлах в папке /cats.

К счастью, в Node.JS много методов для работы с файлами:

Но они асинхронные, а значит нужна библиотека для удобной работы с ними lib/flow.js

flow.serial([func1, func2], callback) Функция serial запускает функции в массиве последовательно. Результат функции передается в следующую. Помимо результата предыдущей функции, она получает колбэк. Колбэк принимает первым параметром ошибку, а вторым – данные для следующей функции. Если любая из функций передает в колбэк ошибку, то следующая не выполняется, а вызывается основной колбэк callback.

flow.parallel([func1, func2], callback) Функция parallel запускает функции в массиве параллельно. Результат собираются в массив, который передается в основной колбэк при завершении всех функций. Функции принимают колбэк. Колбэк принимает первым параметром ошибку, а вторым – данные для конечного массива.

flow.map(['value1', 'value2'], func, callback) Функция map запускает функцию с каждым значением параллельно. Функция принимает значение из массива и колбэк. Результат собираются в массив, который передается в основной колбэк при завершении всех запусков.

Пример работы с библиотекой с подробными комментариями можно традиционно найти в index.js.

Необязательное задание (+27 к концентрации)

flow.makeAsync(func) Функция превращает синхронную функцию в асинхронную.

flow.serial([
    function (next) {
        fs.readFile('./cats/barsik.json', next);
    },
    flow.makeAsync(JSON.parse)
], function (err, parsedJson) {
    console.log(parsedJson);
});

flow.parallel([func1, func2, func3, func4], limit, callback) Функция аналогична parallel, но в один момент времени могут выполняться не больше limit функций, если какая-то функция завершилась можно запускать следуюущую. Важно следить, чтобы кол-во одновременно запущенных функций было равно limit (если функций осталось мало, то меньше limit).

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 100.0%