Giter Site home page Giter Site logo

javascript-tasks-9's Introduction

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

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

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

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

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

Если всё хорошо:
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).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.