Извлекает прогресс загрузки загруженного файла в redux-saga через eventChannel - PullRequest
0 голосов
/ 18 декабря 2018

Я использую redux-saga с eventChannel для обработки загрузки ресурсов с отслеживанием прогресса.

Мне было интересно, какой шаблон лучше всего подходит дляотменить событие загрузки, которое слишком часто.Должен ли я справиться с этим на более низком уровне с удушающим излучением

import {
  eventChannel,
  END
} from 'redux-saga'
import request from 'superagent';
import { throttle } from 'throttle-debounce';



function loadFile(url) {
  return eventChannel(emitter => {

    const emitProgress = (emitter, payload) => emitter(payload);
    const emitProgressThrottled = throttle(500, emitProgress);

    request.post(url)
      .on('progress', event => {
        const payload = {
          percent: event.percent,
          type: 'progress'
        };

        emitProgressThrottled(emitter, payload)            

      })
      .then(res => {
        const payload = {
          data: res.body,
          type: 'finish'
        };

        emitter(payload);
        emitter(END);
      })
  })
}

или лучше справиться с этим в рамках redux-saga scope удушение входящий паттерн, испускаемый eventChannel?

Любая помощь приветствуется.Спасибо.

1 Ответ

0 голосов
/ 20 января 2019

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

Для описанного сценария я предпочел подход с более низким уровнем газа (код в теле вопроса выше).Мне кажется более разумным изолировать область действия API, а также избежать дополнительной нагрузки на промежуточное программное обеспечение redux-saga .

Как правильно указали @ Martin Kadlec , обаРешение должно считаться приемлемым.Какой из них вы выберете, больше связан с шаблонами разработки программного обеспечения и личными предпочтениями.

...