美文网首页
解决函数里面list.forEach async 不能同步执行的

解决函数里面list.forEach async 不能同步执行的

作者: 壹点微尘 | 来源:发表于2021-05-27 13:45 被阅读0次

原本想通过下面的代码, 使该函数变成同步执行,待图片上传完毕后,打印下结果。不过并未如愿,先执行了打印结果后,才执行了上传图片。故下面的函数行不通!!

  void _onSendTap() async {
    EasyLoading.show();

    _viewModel.list.forEach((element) async {
      if (CYObjectUtil.isNotEmptyString(element.value) && !element.value.contains('http')) {
        String url = await CYOssUpLoad.uploadFile(context, file: File(element.value));
        element.value = url;
      }
    });
    
    EasyLoading.dismiss();

    CYLog.d(_viewModel.list.toJSON());
  }

解决办法,把list.forEach 换成 for in循环, 代码如下:

  void _onSendTap() async {
    EasyLoading.show();

    // 上传图片
    for (CYOrderSurveyOperateModel element in _viewModel.list) {
      if (CYObjectUtil.isNotEmptyString(element.value) && !element.value.contains('http')) {
        String url = await CYOssUpLoad.uploadFile(context, file: File(element?.value));
        element.value = url;
      }
    }

    EasyLoading.dismiss();

    CYLog.d(_viewModel.list.toJSON());
  }

相关文章

  • 解决函数里面list.forEach async 不能同步执行的

    原本想通过下面的代码, 使该函数变成同步执行,待图片上传完毕后,打印下结果。不过并未如愿,先执行了打印结果后,才执...

  • dart(五)--异步、生成器

    异步 async,await 可以使同步代码异步执行。只有在async的函数里可以使用await。该函数执行到aw...

  • iOS GCD基本使用及详解

    GCD的基本函数: dispatch_sync() 同步执行 dispatch_async() 异步执行 d...

  • async、await其实是generator和promise的

    async 关键字用于声明异步函数,await 用于在async函数中将异步代码变为同步,阻塞代码的执行 对于pr...

  • GCD分析(下)

    栅栏函数的应用 栅栏函数 作用: 控制任务执行顺序,同步 dispatch_barrier_async 前面的任务...

  • 多线程二

    GCD 栅栏函数 dispatch_barrier_async 控制任务执行顺序,同步 保证线程安全 栅栏函数只能...

  • async /await

    一.同步语法,彻底消灭回调函数; 二.asnyc/await 和promise的关系 1、执行async函数,返回...

  • (async 和 await)ECMAScript8

    async 和 awaitasync函数声明函数前面加async让异步代码像同步代码一样,也是异步编程的一种解决方...

  • GCD 底层源码分析(三)

    栅栏函数 栅栏函数最直接的作用就是控制任务的执行顺序,同步。 dispatch_barrier_async 前面的...

  • 异步的那些事儿,promise

    promise 是es6 的标准函数,主要是解决执行函数当中的回调问题,相对于async,async只是一套解决回...

网友评论

      本文标题:解决函数里面list.forEach async 不能同步执行的

      本文链接:https://www.haomeiwen.com/subject/uhorsltx.html