Мой асинхронный метод не пошел после итерации «для»

#flutter #asynchronous

Вопрос:

Мой код выглядит так:

   Future<List<ListClass>> getIndexList() async {
    return Future.delayed(delayTime).then((_) async {
      //initialize
      List<ListClass> resultListItems = new List<ListClass>();
      await listCollection.get().then((value) async {
        var v = value.data;
        for (var data in v) {
          String userId = data['userId'];
          String authorName=await UserTable().getUserNameById(userId);
          print("createUserName="   authorName);
          resultListItems.add(
              ListClass(header, content, userId, wordCount, authorName));
        }
        print("resultListItems.length=" resultListItems.length.toString());
        return resultListItems;
      });

     return resultListItems;
    });
  }
 

Когда я отлаживаю,это показывает,что этот метод возвращает значение null, и после for print("resultListItems"); этого он тоже не запускается. Как я могу это исправить?Спасибо!!

Комментарии:

1. сначала проверьте, есть ли какие-либо данные в «var v = value.data;». Если v содержит данные, то ваш for будет выполняться иначе.

2. печать(«Имя пользователя»..) работает нормально,метод добавления работает хорошо,я могу заглянуть в этот список до конца предложения for. Но он не запускает следующий

3. не используйте then (низкоуровневый Future API) внутренний async метод — вместо этого просто используйте await — это намного проще и экономнее (особенно если вы новичок в async этом деле)

4. Извините,без then как я могу получить ценность?

5. final foo = await listCollection.get(); print(foo);

Ответ №1:

Я обнаружил проблему,предложение for выполняется не полностью.Одна из моих данных в базе данных равна нулю,поэтому она работает с ошибкой.Извините за мою ошибку