umi-request icon indicating copy to clipboard operation
umi-request copied to clipboard

怎么正确的调用isCancel并传参

Open leehomeok opened this issue 2 years ago • 1 comments

image

我在 request的拦截器给每个请求加上了cancelToken

function addPending(config) {
  const pendingKey = getPendingKey(config);
  config.cancelToken = config.cancelToken || new Reqs.CancelToken((cancel) => {
    if (!pendingMap.has(pendingKey)) {
      pendingMap.set(pendingKey, cancel);
    }
  });
}

async function errHandler(response: Response, options: RequestOptionsInit, resJson: any) {
  const res = resJson ? resJson : await response?.clone?.()?.json?.() || {}
  console.log('isCancel', Reqs.isCancel(options), options)
  if(Reqs.isCancel(options.cancelToken)){
    console.log('Request canceled', options.message);
    return
  }
}

在response的时候 调用isCancel方法判断, 但每次都返回的false, 查看源码后,发现isCancel方法是判断传入的对象是否有__CANCEL__这个属性, 且__CANCEL__ == true

如上截图,传参是否应该为 .cancelToken.promise

leehomeok avatar Aug 09 '22 08:08 leehomeok