js按顺序循环接口返回数据,组合成新数据

有时候我们需要根据一个参数,通过接口返回的数据进行一一对应。形成请求参数又有对应的返回结果的新数据。

新数据格式1:一个对象包含请求参数和返回值

现在vue项目里有个字典接口,该页面很多地方要调用字典接口,需要写个循环将字典值和接口返回数据对应。

先声明一个dictlist空数据

调用字典接口,回调字典列表

initDict(dict){
        return new Promise((resolve, reject) => {
          initDictOptions(dict).then(res => {
            let result= res.result
            resolve(result)
          })
        })
    }, 

循环要遍历的数组,调用上面方法,将数据填充到dictlist。

Promise .all()方法用于将多个 Promise 实例,包装成一个新的 Promise 实例。

initDictConfig() {
      let list = this.dictOptions.map(async (item, index) => {
        item.dictlist=await this.initDict(item.dictName)
        return item
      })
      Promise.all(list).then((value,i) => {
       
        console.log(value)
      })
      
},

 最终打印数据的内容

新数据格式2:键值对形式

更换一个新需求,键值对 键(字段名)值(字典对应的数据)

1.data上声明好字典名

dictCode:{
        QPMS_PROBLEM_STATUS:[],
        QPMS_PROBLEM_SHIFT:[],
        QPMS_PROBLEM_MATERIALTYPE:[],
}

2. 可以使用mixins这个只需要todo页面声明好需要的字段,即可立即生成对应的字典数据,这样就可以在页面当中使用了。

import { dictMixin } from '@/mixins/dictMixin'

 mixins: [dictMixin],

vue项目可以写一个mixins 这样每个页面都能调用

 
import {initDictOptions} from '@/api/dict/JDictSelectUtil'
/*
查询字典
data声明需要的字典
dictCode:{
    QPMS_PROBLEM_SHIFT:[]
}
调用接口后获得的值
dictCode:{
    QPMS_PROBLEM_SHIFT:[
        {"value": "0", "text": "白班",  "title": "白班"},
        {"value": "1", "text": "夜班", "title": "夜班" }
    ]
}
template 字典映射
{{ formatDict(dictCode.QPMS_PROBLEM_STATUS,record.status) }}

*/ 
export const dictMixin = {
  data(){
    return {
        dictCode:{
           
        }
    }
  },
  created(){
    this.initDictlist()
  },
  methods:{
    initDict(dict){
        return new Promise((resolve, reject) => {
          initDictOptions(dict).then(res => {
            let result= res.result
            resolve(result)
          })
        })
    }, 
    initDictlist() {
        if(Object.keys(this.dictCode).length == 0){
            return
        }
        var keys=Object.keys(this.dictCode)
        let list = keys.map(async (item, index) => {
            this.dictCode[item]=await this.initDict(item)
            return item
        })
        Promise.all(list).then((value,i) => {    
            console.log('调用字典:',this.dictCode)
        })
      
    },
    formatDict(list,e) {
        if (e || e==0) {
            let obj = list.find((item) => {
                return item.value == e
            })
            if (obj) {
                return obj.text || obj.title 
            } else {
                return e
            }
        } else {
            return ''
        }
    },
  }
} 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

IIOT与IOT:什么是工业物联网?为什么需要工业物联网?

工业物联网也被称作工业4.0或工业互联网,是物联网的一个子集,其通过通信技术连接的众多工业设备组成的网络,使系统能够以前所未有的方式监控、收集、交换、分析和提供有价值的新见解,以帮助工业企业做出更智能、更快速的业务决策。…

告诉你playwright 不使用with sync_playwright() as编写脚本的新方法

大家都知道playwright代码的标准写法是: with sync_playwright() as p:browser p.chromium.launch(channel"chrome", headlessFalse)page browser.new_page()page.goto("http://www.baidu.com")print(page.title())browser.close() with sy…

解决ESP8266无法退出透传问题以及获取网络时间以及天气方法

网上很多配置ESP8266的教程,但是遇到无法退出透传模式的情况却没有找得到答案,不知道是大家都没遇到还是怎么样,以下是我的解决方法:实测有效 先发送“”(三个加号)(如果是在串口调试助手调试&…

硕迪填报如何自动生成UUID并存入数据库

硕迪填报如何自动生成UUID并存入数据库 需求:1、在不修改jsp页面的情况下,如何生成一个UUID并存入数据库? 2、修改数据时,根据UUID去更新数据。 现在我总结一个更简洁的方法,具体操作步骤如下: 1、填报表…

SpringBoot知识点回顾01

Spring是为了解决企业级应用开发的复杂性而创建的,简化开发。 Spring是如何简化Java开发的 为了降低Java开发的复杂性,Spring采用了以下4种关键策略: 1、基于POJO的轻量级和最小侵入性编程,所有东西都是bean; 2、通…

WebGL开发虚拟旅游应用

WebGL可以用于开发虚拟旅游应用,提供用户在浏览器中探索虚拟景点和环境的交互体验。以下是在WebGL中开发虚拟旅游应用的一般流程,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.需求分析…

Sqoop入门:如何下载、配置和使用

下载和配置 Sqoop是Apache的一个开源工具,主要用于在Hadoop和关系数据库之间传输数据。以下是一些关于如何下载和配置Sqoop的步骤: 下载Sqoop:你可以从Apache的官方网站下载Sqoop。大多数企业使用的Sqoop版本是Sqoop1,例如sqoop-…

flink 读取 apache paimon表,查看source的延迟时间 消费堆积情况

paimon source查看消费的数据延迟了多久 如果没有延迟 则显示0 官方文档 Metrics | Apache Paimon

杰发科技AC7840——SPM电源管理之低功耗模式

0、SPM简介 很早以前就听过低功耗模式,一直没有怎么深入了解,最近遇到几个项目都是跟低功耗有关。正好AutoChips的芯片都有电源管理的功能,在此借用AC7840的SPM对低功耗进行测试。 1、AC7840的5种功耗模式 2、AC7840的模式转换 3、唤醒 在…

Nacos-服务发现与配置管理v1.0

Nacos - 服务发现和配置管理 教学目标 1)能够理解微服务架构的特点 2)能够理解服务发现的流程 3)能够说出Nacos的功能 4)掌握Nacos的安装方法 5)掌握RESTful服务发现开发方法 6)掌握Dubbo服务发现开…

LeetCode 583两个字符串的删除操作 72编辑距离 | 代码随想录25期训练营day56

动态规划算法13 LeetCode 583 两个字符串的删除操作 2023.12.19 题目链接代码随想录讲解[链接] int minDistance(string word1, string word2) {//思路1,求除了最长公共序列外,两个字符串需删除的字符数//以下为求最长公共序列长度的动态规划方法/*v…

让AIGC成为你的智能外脑,助力你的工作和生活

人工智能成为智能外脑 在当前的科技浪潮中,人工智能技术正在以前所未有的速度改变着我们的生活和工作方式。其中,AIGC技术以其强大的潜力和广泛的应用前景,正在引领着这场革命。 AIGC技术是一种基于人工智能的生成式技术,它可以通…

Arcgis导出为tiff

原有一幅影像,在进行一些操作之后,需要导出为tiff 比如我对他进行一个重采样,48m分辨率变为96m 在重采样后的数据图层上右键,导出数据 为什么有时会导出为.gdb格式的呢? 可能是位置处在一个文件地理数据库.gdb下

vue + element 项目表格多选根据状态来禁用

首先如图效果 对elementUI中table表格的多选框进行 可勾选 和 不可勾选 的处理 给 type 属性为 selection 的加一个事件:selectableselected’ <el-table-column type"selection" width"55" :selectable"selected"> </el-table-colum…

《PySpark大数据分析实战》-15.云服务模式Databricks介绍创建集群

&#x1f4cb; 博主简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是wux_labs。&#x1f61c; 热衷于各种主流技术&#xff0c;热爱数据科学、机器学习、云计算、人工智能。 通过了TiDB数据库专员&#xff08;PCTA&#xff09;、TiDB数据库专家&#xff08;PCTP…

Python爬虫之两种urlencode编码发起post请求方式

背景 闲来无事想爬一下牛客网的校招薪资水平及城市分布&#xff0c;最后想做一个薪资水平分布的图表出来 于是发现牛客使用的是application/x-www-form-urlencoded的格式 测试 首先可以先用apipost等测试工具先测试一下是否需要cookie之类的&#xff0c;发现是不需要的&…

内网渗透测试基础——内网信息收集

内网渗透测试基础——内网信息收集 在内网渗透测试环境中&#xff0c;有很多设备和防护软件&#xff0c;例如Bit9、ArcSight、Maniant等。它们通过收集目标内网的信息&#xff0c;洞察内网网络拓扑结构&#xff0c;找出内网中最薄弱的环节。信息收集的深度&#xff0c;直接关系…

即兴小索奇-MyBatis全套笔记

一、MyBatis 1、MyBatis简介 1.1、MyBatis历史 MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下&#xff0c; iBatis3.x正式更名为MyBatis&#xff08;3之前还是iBatis&…

Docker 核心技术

Docker 定义&#xff1a;于 Linux 内核的 Cgroup&#xff0c;Namespace&#xff0c;以及 Union FS 等技术&#xff0c;对进程进行封装隔离&#xff0c;属于操作系统层面的虚拟化技术&#xff0c;由于隔离的进程独立于宿主和其它的隔离的进程&#xff0c;因此也称其为容器Docke…

MicroBin让代码共享更简单

什么是 MicroBin &#xff1f; MicroBin 是一个超小型&#xff0c;功能丰富、可配置、安全、独立且自托管的Pastebin Web 应用程序。但更简单&#xff0c;可通过调整环境变量来添加或删除功能&#xff0c;具有 URL 重定向、自动文件过期、原始文件服务、5 级隐私设置、二维码共…