我将redux-saga与eventChannel配合使用,以便通过进度跟踪来处理资源加载。
我想知道什么是最好的模式,以便消除过于频繁的负载进度事件。我是否应该以throttled排放量较低的水平处理该问题
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 范围 throttling中处理eventChannel
发出的入站模式更好?
任何帮助表示赞赏。谢谢。
答案 0 :(得分:0)
自从我最初发布问题以来已经过去了两个星期,我的想法更加清楚了。
对于所描述的场景,我更喜欢使用较低级别的油门方法(上述问题正文中的代码)。对我来说,隔离API操作范围以及避免给redux-saga中间件增加负担。
正如@Martin Kadlec正确指出的那样,两种解决方案均被视为可以接受。您会选择哪一种与软件设计模式和个人偏好联系在一起。