// import { ref } from "vue";
// import axios from "axios";

//   const keyword = ref("");
//   let temp;
//   const search = () => {
//     temp?.("取消请求"); // 取消上一次请求
//     axios({
//       method: "post",
//       url: "/api",
//       data: { wd: keyword.value },
//       cancelToken: new axios.CancelToken((cancel) => {
//         // 接受一个 cancel 取消当前请求的方法
//         temp = cancel;
//       })
//     }).then((res) => {
//       // 成功
//     }).catch((err) => {
//       if (axios.isCancel(err)) {
//         console.log(err.message); // 被取消时的参数
//       } else {
//         console.log(err); // 请求错误
//       }
//     });
//   };


// import { AxiosRequestConfig } from "axios";

// export default {

//     tokens: new Map(),

//     getKey: (config: AxiosRequestConfig): string => [config.url,config.method].join("&"),

//     add(config: AxiosRequestConfig) {
//         const pendingKey = this.getKey(config);
//         config.cancelToken =
//             config.cancelToken ||
//             new axios.CancelToken((cancel) => {
//                 if (!this.tokens.has(pendingKey)) {
//                     this.tokens.set(pendingKey, cancel);
//                 }
//             });
//     },

//     remove(config: AxiosRequestConfig) {
//         const pendingKey = this.getKey(config);
//         if (this.tokens.has(pendingKey)) {
//             const cancelToken = this.tokens.get(pendingKey);
//             cancelToken(pendingKey);
//             this.tokens.delete(pendingKey);
//         }
//     },

//     removeAll() {
//         this.tokens.forEach((value, key) => {
//             const cancelToken = this.tokens.get(key);
//             cancelToken(key);
//             this.tokens.delete(key);
//         });
//     },
// };

