如何在飞镖中控制异步执行流程[重复]

Posted

技术标签:

【中文标题】如何在飞镖中控制异步执行流程[重复]【英文标题】:how to control the execute flow in async in dart [duplicate] 【发布时间】:2021-11-10 11:42:01 【问题描述】:

现在我遇到了一个问题,这是我的 Dart 代码:

Future<List<Music>?> getAvaliableFmMusics(List<Music>? recommand) async 
    final List<Music> resultMusic = List.empty(growable: true);
    if (recommand != null) 
      recommand.forEach((element) async 
        bool isLegacyMusic = await ReddwarfMusic.legacyMusic(element);
        if (!isLegacyMusic) 
          resultMusic.add(element);
        
      );
    
    return resultMusic;
  

我得到一个推荐的音乐列表,下一步我检查音乐列表是否包含旧音乐(用户已经听了很多次),然后将过滤的音乐添加到新列表中。最后将过滤后的音乐列表返回给用户 UI。问题是传统音乐将发送异步 http 请求,resultMusic 总是返回 null。我想要做的是等待 foreach 完成然后返回过滤后的resultMusic,我应该怎么做才能让它像那样工作?这样可以吗?

【问题讨论】:

【参考方案1】:

要使用forEachFutures,您应该使用Future.forEach

像这样:

await Future.forEach(yourList,(e) async 
  await asyncCall(e);
);

【讨论】:

以上是关于如何在飞镖中控制异步执行流程[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用events.EventEmitter 控制Node.js 程序执行流程

Node.js-串行化流程控制

shell脚本流程控制

30天Python入门到进阶——第5天:流程控制

第四章 流程控制

Java入门到架构师教程之JavaScript流程控制语句