Skip to content

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

Notifications You must be signed in to change notification settings

urfu-2015/javascript-tasks-9

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 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

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

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published