通过 eventChannel 在 redux-saga 中发出节流文件加载进度
Emit throttled file load progress in redux-saga through eventChannel
我正在使用 redux-saga with eventChannel 来处理带有进度跟踪的资源加载。
我想知道什么是消除过于频繁的加载进度事件的最佳模式。我是否应该使用 throttled emission
在较低级别处理它
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 throttling eventChannel
发出的入站模式中处理它更好?
感谢任何帮助。谢谢。
自从我最初发布问题以来已经过去了几个星期,我的想法更加清晰。
对于所描述的场景,我更喜欢较低级别的节流方法(上述问题正文中的代码)。隔离 API 操作范围以及避免对 redux-saga 中间件的额外负载对我来说似乎更合理。
正如 @Martin Kadlec 正确指出的那样,两种解决方案都被认为是可以接受的。至于选择哪一个,则与软件设计模式和个人喜好有关。
我正在使用 redux-saga with eventChannel 来处理带有进度跟踪的资源加载。
我想知道什么是消除过于频繁的加载进度事件的最佳模式。我是否应该使用 throttled emission
在较低级别处理它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 throttling eventChannel
发出的入站模式中处理它更好?
感谢任何帮助。谢谢。
自从我最初发布问题以来已经过去了几个星期,我的想法更加清晰。
对于所描述的场景,我更喜欢较低级别的节流方法(上述问题正文中的代码)。隔离 API 操作范围以及避免对 redux-saga 中间件的额外负载对我来说似乎更合理。
正如 @Martin Kadlec 正确指出的那样,两种解决方案都被认为是可以接受的。至于选择哪一个,则与软件设计模式和个人喜好有关。