executor(c) {cancel = c;})这里面的c是别人已经封装号的一个函数吗?

来源:1-4 内容组件--取消前一次请求

前端SoEasy

2019-07-07 22:19:50

import axios from 'axios';
import {SUCC_CODE, TIMEOUT} from './config';

const CancelToken = axios.CancelToken;
let cancel;
// 获取内容数据--ajax
export const getCategoryContent = (id) => {
 cancel && cancel('取消了前一次的请求');
 cancel = null;
 return axios.get(`http://www.imooc.com/api/category/content/${id}`, {
   timeout: TIMEOUT,
   cancelToken: new CancelToken(function executor(c) {
     cancel = c;
   })

 }).then(res => {
   if (res.data.code === SUCC_CODE) {
     return res.data.content;
   }

   throw new Error('没有成功获取到数据!');
 }).catch(err => {
   if (axios.isCancel(err)) { // 取消前一次的请求
     console.log(err);
   } else {
     // handle error
     console.log(err);
   }
 });
};

写回答

1回答

好帮手慕慕子

2019-07-08

同学你好, 是的哦, c是别人已经封装好的方法, 我们直接使用即可哦

如果帮助到了你, 欢迎采纳!

祝学习愉快~~~

0

0 学习 · 10739 问题

查看课程