美文网首页
循环中含有异步操作,如何实现循环完之后,再执行下面的代码

循环中含有异步操作,如何实现循环完之后,再执行下面的代码

作者: 麦田_426 | 来源:发表于2023-05-03 17:24 被阅读0次

需求

获取进行了某种类似文件设置的一类数据的集合,但是,要进行逐个判断当前文件是否在服务器中存在。 所以循环里面有个异步请求

问题

因为项目是基于jquery框架的,一开始尝试在 $.each() 中 通过Promise实现以上需求,但是稳定性不够高,偶尔会出错。(也可能是我的用法有误,如有大佬,请留言指教)
后来,事实证明,foreach或者 each 都无法很好的实现以上需求;使用for....of 才是最佳选择。

相关代码

async function getAllLutInfo(){
    let ch_elem = $('#design').find('.pa.baseOutIn').toArray();
    let lut_arrs = [];
    for(let ele of ch_elem){
        let v_streamtype = $(ele).attr('data-streamtype');
        if(v_streamtype !== 'Audio'){
            let lut_val = $(ele).children('.btn_audio_video').attr('data-lut');  //文件路径
            let lut_have = await checkChannelLut(lut_val);
            if(lut_val && lut_have == 'TRUE'){
                let obj = {
                    'Lut': lut_val,
                };
                lut_arrs.push(obj);
            }
        }
    }
    return lut_arrs;
}

其中,第二行,因为find() 方法获取到的是jquery对象,不具备Iterator 结构,所以无法使用 for... of 进行遍历,要使用 toArray()转化为真正的数组
checkChannelLut() 函数为异步请求函数
以上为全部内容。有意见或疑问请留言。

相关文章

  • 循环中的异步请求结果在循环外使用问题

    场景:在一个for循环中执行异步请求,请求结果最终需要在循环外部使用。 由于异步代码执行是在主栈代码执行结束之后再...

  • Swift3.0 / swift2.3中dispatch_gro

    在项目开发中有时候需要把一些循环执行的异步操作加入到group中,让彻底循环完之后再进行下一步操作,直接上代码 创...

  • 循环串行异步 Promise

    有时候会有这一种需要,需要在循环中执行一系列操作。但是循环的每次迭代的操作是异步的,此时如何实现“异步串行”呢? ...

  • 异步编程

    同步与异步 同步:按代码顺序依次执行 异步:先执行同步代码,完成后再执行异步代码 事件循环与消息队列:当代码执行到...

  • 如何在异步方法都执行后再执行

    在异步方法执行后再执行的直接解决方案就是写回调。可是如果想让所有的(例如循环调用的若干次)异步方法全部执行完之后再...

  • 12.事件循环-微任务与宏任务

    事件循环机制js中的代码,其上下文进入执行栈之后,引擎会判断是不是异步操作(如DOM事件、timer、异步请求)。...

  • 浏览器中的事件循环与Node中的事件循环

    浏览器中的事件循环 JS线程读取并执行JS代码 执行JS代码的过程中,指定异步的操作给对应的线程处理 异步线程处理...

  • 循环

    定义 while(循环条件){循环操作 // 先判断,再执行...

  • 异步与回调

    1. 同步 同步:一个任务执行完拿到结果之后,再执行下一步操作。即顺序执行代码。 2. 异步 异步:不等待一个任务...

  • 5.语句

    if 语句 推荐写法 do-while 语句 后测试循环语句。循环体内执行完代码之后,才会测试出口条件。(循环体内...

网友评论

      本文标题:循环中含有异步操作,如何实现循环完之后,再执行下面的代码

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