【发布时间】:2019-09-16 00:15:32
【问题描述】:
是否可以使用 axios 自动限制所有发往特定端点列表的请求?也许使用 axios 拦截器?
目前我限制了发送 axios 请求的用户操作,但问题是我必须在任何有导致某些 AJAX 请求的用户操作的地方写这个。像这样
const throttledDismissNotification = throttle(dismissNotification, 1000)
const dismiss = (event: any) => {
throttledDismissNotification();
};
render() {
return (
<Button onClick={dismiss}>Dismiss Notification</Button>
)
}
这会导致很多混乱,我想知道这是否可以自动化。
类似:
if(request.url in listOfEndpointsToThrottle && request.params in cacheOfPreviousRequestsToThisEndpoint) {
StopRequest();
}
显然这是伪代码,但你明白了。
【问题讨论】:
-
第一步可能是在你的 Redux 存储中添加一个标志,如
isFetching、isCreating、isUpdating等,并在该标志已经存在时禁用进行调用的按钮true. -
@GG。我已经实现了类似的东西..a
loading状态在您发送请求时设置为 true,在返回时设置为 false。但是,与上面的解决方案类似,这会使代码库变得混乱且乏味。 -
@ManavM 我有一个与您的问题相关的 SO 讨论 stackoverflow.com/questions/55919714/… 看看是否对您有帮助。
-
限制 axios 请求调用非常容易。真正令人头疼的是如何处理从那些无效请求返回的承诺,我们应该如何定义它们的行为?他们会永远等待吗?您的代码的其他部分是否期待或准备好处理未决的承诺?
-
@Qiulang 只需检查您的链接。 Bergi's answer 不错。这个问题很难一概而论,而且我认为没有完美的万能解决方案来限制/消除任何返回承诺的函数。
标签: javascript reactjs axios redux-thunk