Мы очень хотим, чтобы код вы написали сами, а не пользовались внешними библиотеками.
Прежде чем отправлять решение, проверьте его на соответствие общим требованиям.
Когда вы создадите или обновите пулл-реквест, он автоматически будет проверен на соответствие кодстайлу и базовую работоспособность. Результаты вы увидите внизу:
Проверить можно и вручную:
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
.
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
).