# umi相关

返回:笔记

# 请求中断

umi 项目中使用 CancelToken 中止请求

import { createService } from '@/utils/pageUtils';
import request from '@/utils/request';
import umiRequest from 'umi-request';

const { CancelToken } = umiRequest
const cancelFn = {};

export default createService(ctx, {
  async pageHome(params) {
    const { pageHomeCancel } = cancelFn;
    // 中断旧请求,防止数据覆盖
    if (pageHomeCancel) {
      pageHomeCancel()
    }
    return request(`${ctx}/page`, {
      method: 'POST',
      data: params,
      cancelToken: new CancelToken(c => {
        // console.info(c, '-----')
        Object.assign(cancelFn, { pageHomeCancel: c })
      }),
    });
  },
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// @/utils/request
const errorHandler = error => {
  const { response } = error;
// console.info(error, '==============')
  if (error?.['request']?.['options']?.['cancelToken']) {
    // notification.warn({
    //   description: '当前请求已被取消',
    //   message: '取消请求',
    // });
    console.info('手动取消请求,防止旧数据覆盖新数据')
  }
  ……
}
1
2
3
4
5
6
7
8
9
10
11
12
13