首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何得到函数的最后一个Axios调用?

如何得到函数的最后一个Axios调用?
EN

Stack Overflow用户
提问于 2022-10-07 15:26:24
回答 3查看 49关注 0票数 0

我有一个JS函数,当用户单击一个图像并将一个axios请求调用到我的后端并得到一个价格时执行,问题是用户可以在任何时候单击不同的图像,后端需要5-10秒才能得到响应,并且由于用户可以单击5个不同的图像,价格会被多次更新(阻止图像不是选项之一)。

如何才能只得到用户单击的最后一张图片的价格,而忽略其他请求?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-10-07 16:04:10

从V0.22.0Axios版本支持AbortController取消请求。您可以首先创建一个中止控制器,在获取新请求之前中止该控制器。就像这样:

代码语言:javascript
运行
复制
const controller = new AbortController();

function handleClick(){

  // cancel the request
  controller.abort();

  axios.get('/foo/bar', {
     signal: controller.signal
  }).then(function(response) {
     //...
  });
}

查看有关此主题的官方Axios 文档

票数 1
EN

Stack Overflow用户

发布于 2022-10-07 15:36:54

您可以脱去发出请求的函数。在设定的时间范围内,在对特定函数的后续调用中重置的函数上,脱扣设置了一个定时器。

在这里,我使用了underscore.js提供的Here函数

代码语言:javascript
运行
复制
handleClick () {
  _.debounce(loadData, 300); // Debounce calls to load data by 300ms
}

loadData () {
  // sends the axios request to fetch pricing info
}

例如:用户单击图像时,调用handleClick。如果用户没有再次单击300 is内的任何图像,则调用loadData并超出请求。

如果用户确实在指定的300 in内单击图像,则时间再次开始;因此,仅在给定时间范围内的最后一次单击才算在内。

票数 1
EN

Stack Overflow用户

发布于 2022-10-07 15:36:42

我认为当用户单击另一个图像时,可以使用中止控制器取消请求。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73989442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档