我想以最佳方式对同一台服务器发出多个请求。所以我有
Future<List<Item>> getAllItems() async { var client = new http.Client(); List<String> itemsIds = ['1', '2', '3']; //different ids List<Item> itemList = []; for (var item in itemsIds) { //make call to server eg: 'sampleapi/1/next' etc await client.get('sampleapi/' + item + '/next').then((response) { //Do some processing and add to itemList }); } client.close(); return itemList; }
现在,一次又一次地进行api调用。但是api调用彼此独立。什么是最好的实现方式,以避免异步等待地狱?
Günter击败了我两分钟,但是我已经输入了它,因此这里有一个小选择,它也可以工作,并且避免完全使用“ then”。
Future<List<Item>> getAllItems() async { var client = new Client(); List<String> itemsIds = ['1', '2', '3']; //different ids List<Response> list = await Future.wait(itemsIds.map((itemId) => client.get('sampleapi/$itemId/next'))); return list.map((response){ // do processing here and return items return new Item(); }).toList(); }