javascript - 如何检查 Api 是否被触发以及如何中止 api 如果触发

标签 javascript reactjs function api ecmascript-2016

我正在创建一个搜索页面,用于搜索 keyup 上的一些数据,对于每个 keyup 调用一个 API,但如果调用第二个 API,我想停止之前的调用。

myFunction(term) {
    const controller = new AbortController();
    const signal = controller.signal;
    controller.abort();
    var apiUrl = window.BASE_URL + '/search?param=' + term;
    console.log(apiUrl);
    this.setState({
      searching: true
    });
    return fetch(apiUrl, { credentials: 'include', signal: signal })
      .then(this.handleErrors)
      .then(response => response.json())
      .then(responseJson => {
         console.log(responseJson);
      })
      .catch(error => {
        console.error(error);
      });
  }

最佳答案

取消先前获取请求的示例:

const controller = useRef<AbortController>() // useRef: for function component. 
// You can create a property in a class component to store this 
// (e.g. `this.controller = null` in your constructor)  

function fetchAndAbortPrevious() {
  controller.current?.abort()
  controller.current = new AbortController()
  fetch('https://cat-fact.herokuapp.com/facts', {
    signal: controller.current.signal,
  })
    .then((response) => response.json())
    .then((response) => console.log(response))
    .catch((err) => console.log('error: ', err))
}

关于javascript - 如何检查 Api 是否被触发以及如何中止 api 如果触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66166872/

相关文章:

javascript - 如何在刷新时保留点击卡片的背景颜色?

php - 打印传递对 javascript window.print() 的文件引用/使用 javascript 打印 pdf

c++ - 协变返回类型和面向对象的编程

php - 无法在文本区域中显示带有换行符的文本,如何保留它们?

javascript - 使用 jQuery each() 函数返回一个值

php - javascript 和 PHP 上的三元运算符,不同的输出

javascript - React - 如何跟踪 useRef child 的变化

android - 如何在 Linux 上的 React Native 中使用 gradle 解决此错误?

javascript - 在 ReactJS 中渲染数组的内容

javascript - 从另一个函数返回的函数