Promises
ЛР09
Создаем на Github репозиторий cwp-09, клонируем его, открываем в IDE
Создаем файл package.json:
{
  "name": "cwp-09",
  "author": "Your name"
}
С помощью терминала устанавливаем Bluebird npm i bluebird
Проверим что зависимость записалась в наш package.json:
{
  "name": "cwp-09",
  "author": "Your name",
  "dependencies": {
    "bluebird": "^3.x.x"
  }
}
Теперь мы можем импортировать библиотеку в наш код - const Promise = require('bluebird');
Также нам понадобиться библиотека для отправки HTTP-запросов - npm i axios
Создадим скрипт population.js, который будет использовать в своей работе Population API. Далее реализуем операции которые будут выполняться последовательно.
1. Загрузим информацию о населении Беларуси в 2017 году. Просуммируем людей всех возрастов и выведем общее количество населения.
2. С помощью метода Promise.all параллельно загрузим информацию о населении Канады, Германии и Франции за 2017 год. Выведем отдельно суммарное количество женщин и мужчин.
3. С помощью метода Promise.any параллельно загрузим информацию о населении Беларуси за 2014 и 2015 года. Выведем на консоль год и количество женщин и мужчин в возрасте 25 лет.
4. С помощью метода Promise.props параллельно загрузим статистику смертности для Греции и Турции. Выведем на консоль страну и возраст наибольшей смертности.
5. Получим список стран и затем с помощью метода Promise.map параллельно загрузим информацию о населении по первым 5 странам за 2007 год. Выведем на консоль страны и общее население.
6. Если на каком-то этапе произошла ошибка, то мы выведем информацию о ней на консоль, а скрипт продолжит выполнение
Создадим скрипт dirs.js
1. Прочитаем про Promise.promisify и Promise.promisifyAll. Применим второй метод к модулю fs
2. Объявим массив dirs куда запишем 10 имен несуществующих директорий, которые нужно создать. Можно воспользоваться следующим массивом:
const dirs = [
  'dir-1/dir-1-1',
  'dir-1/dir-1-2',
  'dir-1/dir-1-2/dir-1-2-1',
  'dir-2/dir-2-1/dir-2-1-1',
  'dir-2/dir-2-2/dir-2-2-1',
  'dir-2/dir-2-1/dir-2-2-2/dir-2-2-2-1',
  'dir-3/dir-3-1',
  'dir-3',
  'dir-3/dir-3-2/dir-3-2-1',
  'dir-3/dir-3-3/dir-3-3-1'
];
3. С помощью методов Promise.mapSeries и fs.mkdirAsync создадим структуру директорий в которой все пути в объявленном массиве существуют.
4*. Подумайте как можно ускорить процесс создания директорий
Задания со звездочкой предназначены для персонального роста и необязательны к показу при защите лабораторной работы
Синхронизируем локальный репозиторий с удаленным (сделаем push на Github)
Покажите историю коммитов своего репозитория на Github
Продемонстрируйте работу скрипта pokeapi.js
Продемонстрируйте работу скрипта dirs.js
Спецификация Promises/A+
Документация по Bluebird
Документация по Population API
Документация по axios