跳到主要内容

NetworkManager

NetworkManager 负责编排异步 fetch。通过跟踪所有进行中的请求,它能够对使用 throttle 标志发起的相同请求进行去重。

实现

NetworkManager 实现了 Manager

生命周期​

成功​

错误​

成员​

constructor({ dataExpiryLength = 60000, errorExpiryLength = 1000 })​

参数表示资源被视为“过时”之前的默认时间(以毫秒为单位)。

middleware​

消费的 action​

会发起网络请求,并在完成后 dispatch。

处理的 action​

派发的 action​

allSettled(): Promise​

在所有进行中的 fetch 完成后 resolve。概念上类似于 Promise.allSettled

skipLogging(action)​

供 DevtoolsManager 判断是否记录某个 action

默认:

skipLogging(action: ActionTypes) {
return action.type === FETCH && action.meta.key in this.fetched;
}

受保护成员​

handleFetch(fetchAction)​

当 middleware 拦截到 'rdc/fetch' action 时调用。

随后会为某个 key 创建一个 promise,并可能发起网络 fetch。

仅当 action meta 指示时才使用 throttle。这对于确保变更请求始终会被发出非常有价值。

handleSet(setAction)​

当 middleware 拦截到 set action 时调用。

会 resolve 与该 set key 关联的 promise。

throttle(key, fetch)​

确保任意时刻对于给定 key 只有一个请求在进行中

使用 key 获取进行中的 promise;如果不存在,则创建一个新的 promise 并调用 fetch。

getLastReset(): number​

整个 store 上次被重置的时间戳

clear(key)​

清除给定 key 的 promise 状态

clearAll()​

通过 reject 剩余的 promise 来确保所有 promise 都已完成