我正在使用 DIO 包进行 API 请求,但问题是当我请求另一个 API 时,而第一个 API 仍在进行中。
它不会取消第一个请求。这两个 API 同时运行,这在我的应用程序场景中并不理想。
class DioClient {
static BaseOptions options = BaseOptions(baseUrl: baseUrl);
Dio _dio = Dio(options);
Future<dynamic> postFormData(
{dynamic data, String url, dynamic header}) async {
final data1 = data;
var formData = FormData.fromMap(data1);
try {
var response = await _dio.post(url,
options: Options(headers: header), data: formData);
return response.data;
} catch (e) {
throw e;
}}}
Run Code Online (Sandbox Code Playgroud)
Jig*_*iya 12
如果您想取消 API 请求调用,则需要使用DIO提供的取消令牌。
当您进行其他 API 调用时,您需要在 dio 请求中传递取消令牌,使用该取消令牌来取消 API 请求
这是代码
class DioClient {
static BaseOptions options = BaseOptions(baseUrl: baseUrl);
//Here is line you need
CancelToken cancelToken=CancelToken();
Dio _dio = Dio(options);
Future<dynamic> postFormData(
{dynamic data, String url, dynamic header}) async {
final data1 = data;
var formData = FormData.fromMap(data1);
try {
//pass cancel token here
var response = await _dio.post(url,
options: Options(headers: header), data: formData,cancelToken: cancelToken);
return response.data;
} catch (e) {
throw e;
}}}
Run Code Online (Sandbox Code Playgroud)
当您首先调用另一个 API 并取消先前的请求时,请使用该 cancelToken 取消 API 请求。
cancelToken.cancel();
Run Code Online (Sandbox Code Playgroud)
享受!
| 归档时间: |
|
| 查看次数: |
14072 次 |
| 最近记录: |