setCancelToken method

BuildRequest<T> setCancelToken(
  1. dynamic cancelToken
)

设置取消令牌

支持两种方式:

  1. 使用 RxNet 的 CancelToken(推荐)
  2. 使用 Dio 的 CancelToken(向后兼容)

Implementation

BuildRequest<T> setCancelToken(dynamic cancelToken) {
  if (cancelToken is rxnet_cancel.CancelToken) {
    // RxNet CancelToken
    _cancelToken = cancelToken;
  } else if (cancelToken is dio.CancelToken) {
    // Dio CancelToken - 创建一个包装器
    final rxnetToken = rxnet_cancel.CancelToken();
    // 当 Dio token 被取消时,也取消 RxNet token
    cancelToken.whenCancel.then((_) {
      rxnetToken.cancel('Cancelled via Dio CancelToken');
    });
    _cancelToken = rxnetToken;
  } else {
    throw ArgumentError('cancelToken must be either CancelToken or dio.CancelToken');
  }
  return this;
}