【发布时间】:2018-11-19 09:47:58
【问题描述】:
每次用户输入内容时,我都会向服务器发送请求。我使用 debounce 来延迟 400 毫秒:
type = debounce((text) => {
this.props.actions.loadInfo(text)
}, 400);
当我输入内容时,停止并重新开始并重复,发送了几个请求并且我收到了不相关的数据。我使用承诺:
export const loadInfo = (text) => dispatch => {
loadData(text).then(result => {
dispatch(showUserData(result));
});
};
export const loadData = async (text) => {
const tabData = await axios.get(`url&query=${text}`);
return tabData;
}
如果用户发送新请求(当他输入内容时),我需要以某种方式取消先前的请求,最好的方法是什么?我预计去抖动会帮助我,但不会。我用axios。这与此处的问题不重复,我检查了提供的解决方案,但对我没有帮助
【问题讨论】:
-
1) 我使用 axios 2) 不会像我在其他情况下尝试过的那样工作
-
再次,没有正确答案
-
@rick1 “正确”是什么意思?我相信我自己的答案是正确的,否则我不会链接它。
-
如果通过去抖动
loadData解决了这个问题,它应该类似于0bin.net/paste/…。希望这可以帮助。还注意到我链接的帖子中的演示是错误的,修复了它,stackblitz.com/edit/react-ecsbrz。此评论中的链接也有误,已更新,抱歉。
标签: javascript promise axios cancellation