问题:未来函数中的Http.get请求被一个接一个地调用。
//this should open 5 simultaneous http connections
for (var i= 0; i < 5; i++) {
getImage('[image soure]', i);
}
我已经将该方法的代码分成几个部分以更好地传达问题。
import 'package:http/http.dart' as http;
void getImage(final String img, final int i) async {
var blurHash = '';
try {
//PART: LOADING
print('loading $img...');
//PART: A
var client = http.Client();
var res = await client.get(img);
print('$i: a');
//PART: B
var bbytes = res.bodyBytes;
print('$i: b');
//PART: C
var l = bbytes.toList();
print('$i: c');
...
blurHash = '...';
} catch (e) {
print(e);
}
}
控制台输出应如下所示:
loading img.png
loading img.png
loading img.png
loading img.png
loading img.png
0: a
1: a
2: a
3: a
4: a
0: b
1: b
2: b
3: b
4: b
0: c
1: c
2: c
3: c
4: c
控制台输出的真正样子:
loading img.png
loading img.png
loading img.png
loading img.png
loading img.png
0: a
0: b
0: c
1: a
1: b
1: c
2: a
2: b
2: c
3: a
3: b
3: c
4: a
4: b
4: c
这意味着加载部分是同时执行的,但似乎 A 部分中的 http.get 请求是在彼此之后执行的。