使用场景:等待gpt响应答案前,终止请求
结合请求拦截器
import axios from 'axios'
export default {
data() {
cancelTokenSource: '',
msg :''
},
methods: {
sendMsg(){
this.cancelTokenSource = axios.CancelToken.source()
// 请求答案
sayChat({ botId: this.params.botId, textContent: msg }, this.cancelTokenSource.token).then((res) => {
console.log(res)
}
}).catch(err => {
console.log('用户取消请求',err)
})
},
stopCreating() {
// 终止请求
this.cancelTokenSource.cancel()
}
}
}
//请求
export function sayChat(params, cancelToken) {
return request({
url: '/tychat/botTalk/say',
method: 'post',
data: params,
cancelToken
})
}
不结合请求拦截器
// 创建取消令牌实例
const source = axios.CancelToken.source();
// 发起HTTP请求
axios.get('/api/data', {
cancelToken: source.token
}).then(response => {
// 请求成功处理逻辑
}).catch(error => {
if (axios.isCancel(error)) {
console.log('请求已被取消:', error.message);
} else {
console.log('请求发生错误:', error.message);
}
});
//方法调用
source.cancel('取消请求的原因');