promise处理数组里面的多任务,等所有任务处理完再执行后续逻辑

news2024/9/22 18:16:24

业务需求,有一个数组里面的数据,需要发送异步任务验证这里面的数据是否可用,然后再将可用的数据存储到本地,原本使用的方式是使用forEach遍历数组,然后在遍历中处理每一个异步函数,等处理完异步函数之后,再将可用的数据添加到一个新数组中。但是这样做就出现了问题:

        let enableItem = []        
        list.forEach(async (item) => {
            handleCheck(item) && enableItem.push(item)
        })
        setCheckedList(enableItem)
        await storage.set('platforms', enableItem)

因为forEach是异步执行的,并且handleCheck也是异步的,即便使用await handleCheck,外层的forEach还是异步的, 所以最后拿到的enableItem永远是一个空数组.......

需要改造为等所有的异步的handleCheck执行完,再调用本地存储函数:

        let enableItem = []
        let fnPromise = list.map((item) => {
            return handleCheck(item)
        })
        Promise.all(fnPromise).then((res) => {
            console.log('判断结果是', res)
            res.forEach((item, index) => {
                item && enableItem.push(list[index])
            })
            setCheckedList(enableItem)
            console.log('存储的platforms:', enableItem)
            storage.set('platforms', enableItem)
        })

这样最后就可以拿到完整的结果了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1490400.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024最新AI大模型产品汇总

文章目录 1. 写在前面2. 效率工具3. 聊天机器人4. 应用开发工具5. Prompt工具与社区6. 通用基础大模型7. 训练框架8. 开源数据集9. 推理与部署平台及工具 【作者主页】:吴秋霖 【作者介绍】:Python领域优质创作者、阿里云博客专家、华为云享专家。长期致…

springboot+bootstrap+jsp校园二手书交易平台mlg86

考虑到实际生活中在校园二手书交易系统方面的需要以及对该系统认真的分析,将系统权限按管理员和学生这两类涉及用户划分。 (a) 管理员;管理员使用本系统涉到的功能主要有个人中心、学生管理、图书类型管理、二手图书管理、通知公告管理、管理员管理、用户留言、系统…

istio pod不启动及访问报RBAC错误问题解决

istio pod不启动问题解决 在kubernetes集群中安装istio之后,在创建的depoyment中已经使用了注入注解sidecar.istio.io/inject: true’配置,但是istio pod不创建,代码示例如下 kind: Deployment apiVersion: apps/v1 metadata:name: name-an…

【Docker】Docker:解析容器化技术的利器与在Linux中的关键作用

🍎个人博客:个人主页 🏆个人专栏:Linux ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 Docker 是什么? Docker 的作用 Docker 在 Linux 中的重要性 结语 我的其他博客 前言 随着软件开发的不断发展&…

012 Linux_线程控制

前言 本文将会向你介绍线程控制(创建(请见上文),终止,等待,分离) 线程控制 线程终止 pthread_t pthread_self(void); 获取线程自身的ID 如果需要只终止某个线程而不终止整个进程,可以有三种…

鸿蒙实战应用开发:【拨打电话】功能

概述 本示例通过输入电话,进行电话拨打,及电话相关信息的显示。 样例展示 涉及OpenHarmony技术特性 网络通信 基础信息 拨打电话 介绍 本示例使用call相关接口实现了拨打电话并显示电话相关信息的功能 效果预览 使用说明 1.输入电话号码后&#…

7、Linux-防火墙和配置静态ip

一、防火墙(防火墙服务名firewalld) 防火墙配置命令:firewall-cmd firewall-cmd --help:防火墙帮助firewall-cmd --state:查看防火墙状态firewall-cmd --zonepublic --list-ports:查看所有打开的端口firew…

【独立版】表情包小程序完整版源码前后端源码

搭建要求: 1.系统要求Nginx 1.18.0PHP-7.2mysql5.6,开启 ssl,php需要安装 sg11 扩展 2.设置伪静态 location / { index index.php index.html index.htm; if (!-e $request_filename) { rewrite ^/(.*)$ /index.php?s$1; } } location /a…

【三维重建】VastGaussian:用于大场景重建的大3D Gaussian(CVPR 2024)

题目:VastGaussian: Vast 3D Gaussians for Large Scene Reconstruction 来源:清华大学;华为诺亚;中国科学院 链接:https://vastgaussian.github.io/ 总结:VastGaussian:基于3D GS的分块优化重…

栈帧、ELF

前言 大家好我是jiantaoyab,这是我所总结作为学习的笔记第四篇,在这里分享给大家,还有一些书籍《深入理解计算机系统》《计算机组成:结构化方法》《计算机体系结构:量化研究方法》《程序员的自我修养》,今天我们来了解程序栈 为什…

Linux下du命令和df命令的使用

du命令作用是估计文件系统的磁盘已使用量,常用于查看文件或目录所占磁盘容量。df命令是统计磁盘使用情况,可以用来查看磁盘已被使用多少空间和还剩余多少空间。du命令语法du [选项] [文件或目录名称]参数:-a:--all, 列…

Ethersacn的交易数据是什么样的(2)

分析 Raw Transanction RLP(Recursive Length Prefix)是一种以太坊中用于序列化数据的编码方式。它被用于将各种数据结构转换为二进制格式,以便在以太坊中传输和存储。RLP 是一种递归的编码方式,允许对复杂的数据结构进行编码。所…

5G工业智能网关保障煤矿安全生产

随着物联网技术发展与煤矿需求的持续激增,矿山矿井的分布范围广泛、户外环境恶劣等管理问题急需解决,而物联网网关工业级设计能够无惧恶劣环境干扰,轻松解决户外网络部署问题。 工业网关通过采集矿井内的各类传感器数据对矿井进行远程监控&a…

【图论】Dijkstra 算法求最短路 - 构建邻接矩阵(带权无向图)

文章目录 例题:到达目的地的方案数题目描述代码与解题思路构建带权无向图的邻接矩阵 例题:到达目的地的方案数 题目链接:1976. 到达目的地的方案数 题目描述 代码与解题思路 func countPaths(n int, roads [][]int) int {g : make([][]int…

使用API有效率地管理Dynadot域名,进行DNS域名解析

关于Dynadot Dynadot是通过ICANN认证的域名注册商,自2002年成立以来,服务于全球108个国家和地区的客户,为数以万计的客户提供简洁,优惠,安全的域名注册以及管理服务。 Dynadot平台操作教程索引(包括域名邮…

文件多线程读取下载+异步上传云存储

文章目录 1. 前言2. 多线程读取下载异步上传2-1. 多线程读取下载2-2. 异步上传异步更新cosUrl 3. 线程池单个任务提交4. 关于异步上传的文件oosUrl地址返回问题 1. 前言 实际开发中经常遇到,文件上传或者文件批量下载的任务。单线程下载大批量文件,排队处…

灰狼算法优化elman神经网络回归分析,GWO-ELMAN回归分析

目录 背影 ELMAN神经网络的原理 ELMAN神经网络的定义 受限玻尔兹曼机(RBM) 灰狼算法原理 灰狼算法优化elman神经网络回归分析 基本结构 主要参数 数据 MATALB代码 结果图 展望 完整代码下载:灰狼算法优化ELMAN回归分析,GWO-ELMAN回归分析资源-CSDN文库 https://download.c…

Electron 多显示器渲染

Electron打出的包,如果当前有俩个显示器,则可以配置当前显示倒哪个显示器上,或者可以配置不同的显示器,启动不同的项目,只在Windows和Linux下测试过,Mac没有真机,可以利用docker安装MacOS环境&a…

苹果电脑免费释放磁盘空间软件CleanMyMac X2024

CleanMyMac X通过以下方式帮助用户释放磁盘空间: 智能扫描和清理:CleanMyMac X拥有强大的智能扫描功能,可以深入系统底层,快速识别并清理各类无用文件和垃圾,如缓存、日志、临时文件等。这些文件通常会占用大量的磁盘…

『运维备忘录』之 RegEx 正则表达式实例汇总

运维人员不仅要熟悉操作系统、服务器、网络等知识,甚至对于开发相关的也要有所了解。很多运维工作者可能一时半会记不住那么多命令、代码、方法、原理或者用法等等。这里我将结合自身工作,持续给大家更新运维工作所需要接触到的知识点,希望大…