MST

星途 面试题库

面试题:Flutter 中 Future 构建网络请求队列基础实现

在Flutter中,假设你有一组网络请求需要依次执行,使用Future如何构建一个简单的网络请求队列?请给出核心代码示例并解释其原理。
48.7万 热度难度
前端开发Flutter

知识考点

AI 面试

面试题答案

一键面试

核心代码示例

import 'dart:async';
import 'package:http/http.dart' as http;

List<String> urls = [
  'https://example.com/api1',
  'https://example.com/api2',
  'https://example.com/api3'
];

Future<void> executeRequestQueue() async {
  for (var url in urls) {
    try {
      var response = await http.get(Uri.parse(url));
      print('Response from $url: ${response.statusCode}');
    } catch (e) {
      print('Error occurred while fetching $url: $e');
    }
  }
}

原理解释

  1. 定义请求队列:首先定义一个包含多个网络请求URL的列表urls,这代表了需要依次执行的网络请求队列。
  2. 循环执行请求:使用for循环遍历urls列表。在每次循环中,使用http.get发起一个网络请求,await关键字会暂停当前函数的执行,直到这个网络请求完成(即Future被解决)。这就确保了每个请求都是在前一个请求完成之后才开始执行,从而实现了依次执行的效果。
  3. 错误处理:在try - catch块中捕获可能发生的错误,并进行相应的错误处理,打印出错误信息,保证程序在遇到网络请求错误时不会崩溃。