Как стать автором
Обновить
6
0

Пользователь

Как не нужно использовать Node.js Stream API

Время на прочтение 3 мин
Количество просмотров 7.7K

В интернете опять кто-то не прав – во вчерашнем Node Weekly была ссылка на пост в котором автор пытается измерить и сравнить с "аналогами" производительность Stream API в Node.js. Грусть вызывает, то как автор работает со стримами и какие он выводы он пытается на основе этого сделать:


...this worked pretty well on smaller files, but once I got to the biggest file, the same error happened. Although Node.js was streaming the inputs and outputs, it still attempted to hold the whole file in memory while performing the operations

Давайте попробуем разобраться, что не так с выводами и кодом автора.

Читать дальше →
Всего голосов 19: ↑17 и ↓2 +15
Комментарии 12

Самое краткое введение в Reactive Programming

Время на прочтение 3 мин
Количество просмотров 20K

Цель данной статьи – показать на примере зачем нужно reactive programming, как оно связано с функциональным программированием, и как с его помощью можно писать декларативный код, который легко адаптировать к новым требованиям. Кроме того, хочется сделать это максимально кратко и просто на примере приближенном к реальному.


Возьмем такую задачу:
Есть некий сервис c REST API и endpointом /people. При POST-запросе на этот endpoint'a создается новая сущность. Написать функцию которая принимает массив объектов вида { name: 'Max' } и создают набор сущностей посредством API(по-английски, это называется batch-операция).


Давайте решим эту задачу в императивном стиле:


const request = require('superagent')

function batchCreate(bodies) {
  const calls = []
  for (let body of bodies) {
    calls.push(
      request
        .post('/people')
        .send(body)
        .then(r => r.status)
    )
  }
  return Promise.all(calls)
}

Давайте, для сравнения, перепишем этот кусочек кода в функциональном стиле. Для простоты, под функциональным стилем мы будем понимать:


  1. Применение функциональных примитивов(.map, .filter, .reduce) вместо императивных циклов(for, while)
  2. Код организован в "чистые" функции – они зависят только от своих аргументов и не зависят от состояния системы
Читать дальше →
Всего голосов 16: ↑13 и ↓3 +10
Комментарии 40

Не нужно оборачивать все в Promise

Время на прочтение 2 мин
Количество просмотров 8.1K

Оригинал статьи


Представим что мы разрабатываем функцию isPi:


function isPi(x) {
  return x === 3.14
}

И тут кто-то говорит: "Мы не хотим знать откуда приходят данные (БД, сеть и т.д.), по-этому давайте обернем наш код в Promise":


Читать дальше →
Всего голосов 29: ↑18 и ↓11 +7
Комментарии 7

The State of Reactive in JS: практический обзор FRP библиотек

Время на прочтение 2 мин
Количество просмотров 9.7K
Статья родилась из этого ответа на StackOverflow и переросла в этот блог пост (на английском), но я думаю она не утратила актуальность.

Сейчас очень много шума вокруг Reactive Programming. Я потратил какое-то время на изучение этой дисциплины применимо к JavaScript и Node.js и сложил свое мнение о самых, на мой взгляд, интересных библиотеках.
Читать дальше →
Всего голосов 25: ↑24 и ↓1 +23
Комментарии 16

Node.js Streams и реактивное программирование

Время на прочтение 4 мин
Количество просмотров 12K

В этой статье мы попробуем решить реальную проблему при помощи Node.js Stream и чуточку Reactive Programming. В последнем не уверен – RP, в какой-то мере, "жупел" (как перевести buzzword?) о котором все говорят, но никто не "делает".


Статья рассматривает практический пример и ориентирована на знакомого с платформой читателя, по-этому намеренно не объясняет базовые понятия – если что-то непонятно по Stream API, то стоит обратится в документацию платформы или в какой-нибудь ее пересказ (например, этот).


Начнем с описания проблемы: нам нужно построить “паука” который заберет все данные с “чужого” REST API, как-то их обработает и запишет в “нашу” базу данных. Для удобства моделирования мы опустим детали о конкретных API и базы данных (в реальности, это было API одного известного стартапа связанного с гостиницами и Postgres база данных).

Читать дальше →
Всего голосов 18: ↑16 и ↓2 +14
Комментарии 8

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность