在项目中,发起请求后点击中断请求按钮,关闭请求连接,例如在AiChat页面,中断消息回答

方法1:创建AbortController(),调用abort方法

api.ts中

export function addDocQuestion(params: IAddPairQuestion, signal?: AbortSignal) {
    return request({
        url: `/qa/addDocQuestion`,
        method: "post",
        data: JSON.stringify(params),
        headers: {
            "Content-Type": "application/json"
        },
        signal
    });
}

页面中

// 发起请求
const handleSearchDocs = (params: IForm) => {
  abortController.value = new AbortController();
  addDocQuestion(params, abortController?.value?.signal)
    .then((res: any) => {
      streamAIResponse(res.data.question).then((r) => {
        addSuccessMessage(res.data.question, params.qaMode);
      });
    })
    .catch((err: any) => {
      addErrorMessage(err.toString(), params.qaMode);
    });
};

// 中断请求
const stopAnswering = () => {
  if (abortController.value) {
    abortController.value.abort();
  }
};

方法2.使用 CancelToken.source 工厂方法创建 cancel token

参考axios官网,http://www.axios-js.com/zh-cn/docs/index.html#%E5%8F%96%E6%B6%88