Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

js-improvement/javascript-task-8

Repository files navigation

Задача «Котофайлы»

Перед выполнением задания внимательно прочитайте:

Основное задание

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

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

Вот, например, данные о коте «Батончике»:

{
 "name": "batonchik",
 "price": 99000
}

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

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

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

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

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

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

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

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

Дополнительное задание (+27 к концентрации)

Перед выполнением внимательно прочитайте про особенности

Ещё парочка полезных методов:

flow.mapLimit(['value1', 'value2'], limit, func, callback)
Аналог map, но ограничивает количество одновременно выполняемых операций параметром limit.

flow.filterLimit(['value1', 'value2'], limit, func, callback)
Аналог filter, но ограничивает количество одновременно выполняемых операций параметром limit.

Примеры использования этих методов можно посмотреть в index.js и в тестах.

About

Задача «Котофайлы»

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

Languages

  • JavaScript 100.0%

AltStyle によって変換されたページ (->オリジナル) /