fix(useRequest): 修复runAsync在节流状态下不生效的问题 #2899
Open
+70
−1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
🤔 这个变动的性质是?
🔗 相关 Issue
Fixes #2898
💡 需求背景和解决方案
问题描述:
当使用
useRequest配置节流选项(throttleLeading: true,throttleTrailing: false)时,runAsync方法不遵守节流配置,会发送所有请求;而run方法能够正常工作。问题根因:
问题由
useRequestImplement.ts中使用.bind()方法导致。当调用fetchInstance.runAsync.bind(fetchInstance)时,会创建一个新函数,该函数永久引用绑定时刻的原始runAsync方法。之后,当节流插件替换fetchInstance.runAsync为节流版本时,已绑定的函数仍然指向原始的未节流方法。解决方案:
将
runAsync的绑定方式从:改为: