跳出循环可不要再用forEach,map也不好用,不妨直接用for循环
需求:循环一个数组保持请求顺序请求接口,且当前数组的值为1时,又需要异步请求另一个接口根据返回status值跳出本次循环。
解决思路:使用for循环,首先在循环中判断数组中值为1的,用async和await异步请求返回数据状态跳出循环;同时把符合条件的所有请求接口push到一个数组中去,最后Promise.all。
直接上代码:
1 data() {
2 return {
3 dataList: [],
4 form: {
5 params: [],
6 tableType: null,
7 taskId: null
8 },
9 titleList: [9, 1, 2]
10 }
11 }
12 methods: {
13 async getList() {
14 this.dataList = [];
15 const p = [];
16 // 循环调用同一个接口
17 for (let i = 0,l = this.titleList.length; i < l; i++) {
18 this.form.tableType = this.titleList[i];
19 if (this.titleList[i] === 1 || this.titleList[i] === 2) {
20 // 根据taskStatus值,跳出循环。
21 if (this.titleList[i] === 1) {
22 const { code, data } = await this.getInfo();
23 if( code !== 0 || data.taskStatus !== 1) {
24 break;
25 }
26 }
27 } else if (this.titleList[i] === 9) {
28 // 清空值。
29 this.form.params = [];
30 }
31 // 把符合条件的接口push到数组中去
32 p.push(querysNationalGrants(this.form));
33 }
34 Promise.all(p)
35 .then((res) => {
36 res.map((info) => {
37 if (info.code == 0) {
38 this.dataList.push(info.data) || [];
39 this.dataList.map((j) => {
40 this.$set(j, "loading", false);
41 return j;
42 });
43 }
44 });
45 })
46 .finally(() => {
47 this.loading = false;
48 });
49 },
50 getInfo(){
51 return getInfoById(this.form.taskId);
52 }
53 }
坑点:
1、当时还是来了就跳到forEach坑中去了,forEach不能跳出循环
2、然而呢又使用了some (return true 跳出整个循环)
1 let list = [1, 2, 3, 4, 5];
2 list.some((value, index) => {
3 if(value === 3){
4 return true; // 当内部return true时跳出整个循环
5 }
6 console.log(value) // 1 2
7 });
表面上看好像没什么毛病,但是到上面的判断处就是不起作用,纠结了很久。。。估计是我太肤浅了。
鉴定完毕,欢迎友友们一起交流学习!!
跳出循环可不要再用forEach,map也不好用,不妨直接用for循环的更多相关文章
- for in //for of //forEach //map三种对比
遍历Array可以采用下标循环,遍历Map和Set就无法使用下标.为了统一集合类型,ES6标准引入了新的iterable类型,Array.Map和Set都属于iterable类型. 具有iterabl ...
- js中数组的循环与遍历forEach,map
对于前端的循环遍历我们知道有 针对js数组的forEach().map().filter().reduce()方法 针对js对象的for/in语句(for/in也能遍历数组,但不推荐) 针对jq数组/ ...
- js之 foreach, map, every, some
js中array有四个方法 foreach, map, every, some,其使用各有倾向. 关注点一:foreach 和 map 无法跳出循环,每个元素均执行 foreach 和 map 无法跳 ...
- JS数组中every(),filter(),forEach(),map(),some()方法学习笔记!
ES5中定义了五种数组的迭代方法:every(),filter(),forEach(),map(),some(). 每个方法都接受两个参数:要在每一项运行的函数(必选)和运行该函数的作用域的对象-影响 ...
- 【原】javascript笔记之Array方法forEach&map&filter&some&every&reduce&reduceRight
做前端有多年了,看过不少技术文章,学了新的技术,但更新迭代快的大前端,庞大的知识库,很多学过就忘记了,特别在项目紧急的条件下,哪怕心中隐隐约约有学过一个方法,但会下意识的使用旧的方法去解决,多年前ES ...
- for循环,foreach, map,reduce用法对比+for in,for of
for不做赘述,相当简单: foreach方法: forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数. 注意: forEach() 对于空数组是不会执行回调函数的. array.f ...
- ES5的 forEach, map 方法的实现
如果浏览器不支持forEach,map方法, 要我们自己封装一个, 该怎么操作呢? 1. forEach Array.prototype.forEach = function(fn) { if (th ...
- 数组那些事(slice,splice,forEach,map,filter等等)
周五,再过会要下班了,刚才把<javascript高级程序设计>数组这块又看了下,加深下记忆.今天来继续练练笔,嘿嘿!(写下自己印象不深的东西) 一.数组的定义(数组定义分为两种) 方法一 ...
- js数组中indexOf/filter/forEach/map/reduce详解
今天在网上看到一篇帖子,如题: 出处:前端开发博客 (http://caibaojian.com/5-array-methods.html) 在ES5中一共有9个Array方法,分别是: Array. ...
- ES5 的 forEach, map, filter, some, every 方法
1: forEacharray.forEach(callback,[ thisObject]) // 遍历数组里面的所有数字// item 是值, i 是序号, array 是整个数组 [1, 2 ...
随机推荐
- CSI架构和原理
CSI CSI简介 CSI的诞生背景 K8s 原生支持一些存储类型的 PV,如 iSCSI.NFS.CephFS 等等,这些 in-tree 类型的存储代码放在 Kubernetes 代码仓库中.这里 ...
- 解决element-ui下拉框数据过多,导致页面卡顿问题与本地分页功能实现
效果 前情提要: 最近使用element-ui开发的一个页面,在打开的时候占用cpu非常高,有时候都能达到90%↑.在调试时发现其中一个下拉框的接口返回2k↑的数据.本着有问题问百度的精神,看到主要的 ...
- Linux安装MongoDB 4.0.3
Linux安装MongoDB 4.0.3 1.准备 CentOS下安装MongoDB 官网提供windows.Linux.OSX系统环境下的安装包,这里主要是记录一下在Linux下的安装.首先到官 ...
- 【笔试实战】LeetCode题单刷题-编程基础 0 到 1【三】
682. 棒球比赛 题目链接 682. 棒球比赛 题目描述 你现在是一场采用特殊赛制棒球比赛的记录员.这场比赛由若干回合组成,过去几回合的得分可能会影响以后几回合的得分. 比赛开始时,记录是空白的.你 ...
- 4.3 x64dbg 搜索内存可利用指令
发现漏洞的第一步则是需要寻找到可利用的反汇编指令片段,在某些时候远程缓冲区溢出需要通过类似于jmp esp等特定的反汇编指令实现跳转功能,并以此来执行布置好的ShellCode恶意代码片段,LyScr ...
- Java扩展Nginx之二:编译nginx-clojure源码
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 为什么要编译nginx-clojure源码 作为< ...
- 浅析华为云Astro的5大关键能力技术
摘要:本文以技术方案视角,对华为云Astro低代码平台的一些核心功能进行简要介绍. 背景介绍 低代码开发基于可视化开发的概念,结合了云原生和多终端体验技术,它可以在大多数业务场景中,帮助企业显著的提升 ...
- 理解ASP.NET Core - 限流(Rate Limiting)
注:本文隶属于<理解ASP.NET Core>系列文章,请查看置顶博客或点击此处查看全文目录 概述 在微服务化的架构设计中,网关扮演着重要的看门人角色,它所提供的功能之一就是限流.而对于众 ...
- 解决npm install 报错 'proxy' config is set properly. See: 'npm help config'
输入以下命令 npm config set proxy null npm config set https-proxy null 之后重新安装即可 文章参考 https://blog.csdn.net ...
- 关于python pycharm中输出的内容不全的解决办法
import pandas as pd #设置显示的最大列.宽等参数,消除打印不完全中间的省略号 pd.set_option("display.width",1000) #加了这一 ...