promiseAll例1

循环一个数组,
调用方法1,返回ture或false
如果true,调用接口a
如果false,调用接口b
获取当a和b全部返回的时候

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    var arr = [1, 2, 3, 4, 5]
    var promiseData = []

    for (let i = 0; i < arr.length; i++) {

      let answer = aa(i)



      if (answer) {
        console.log('调用settimeout1')
        promiseData.push(settimeout1())

      }
      else {
        console.log('调用settimeout2')
        promiseData.push(settimeout2())
      }
    }
    Promise.all(promiseData).then(data => { // 数据
      console.log(data)
    })

    function aa(i) {
      let aAnswer
      if (i % 2 != 0) { // 1,2,3
        aAnswer = true
      }
      else { // 4,5
        aAnswer = false
      }
      return aAnswer

    }

    function settimeout1() {

      return new Promise((resolved, rej) => {

        setTimeout(() => {
          resolved('settimeout1')
        }, 4000)

      })

    }

    function settimeout2() {

      return new Promise((resolved, rej) => {

        setTimeout(() => {
          resolved('settimeout2')
        }, 2000)

      })

    }
  </script>
</body>

</html>
    /*================ 批量硬件配置 开始 ================*/
    // 获取表单内容

    // 获取选中的列表
    // 循环选中的列表
    // 看选中的每一个绑定过,还是没有绑定过
    // 没绑定过的,走新增接口
    // 绑定过的,走修改
    batchHard() {

      // 获取表单内容
      let resolvingPowerArr = this.hardForm.resolvingPower.split('*')
      let customerObj = {
        locateInterval: this.hardForm.locateInterval == undefined ? '' : this.hardForm.locateInterval,
        videoWidth: Number(resolvingPowerArr[0]) == undefined ? '' : Number(resolvingPowerArr[0]),
        videoHeight: Number(resolvingPowerArr[1]) == undefined ? '' : Number(resolvingPowerArr[1]),
        videoBitRate: this.hardForm.videoBitRate == undefined ? '' : this.hardForm.videoBitRate,
        apk: this.hardForm.apk == undefined ? '' : this.hardForm.apk,
        version: this.hardForm.version == undefined ? '' : this.hardForm.version,
        functioncode: this.hardForm.functioncode == undefined ? '' : this.hardForm.functioncode,
        rtmp: this.hardForm.rtmp == undefined ? '' : this.hardForm.rtmp,
        mqtt: this.hardForm.mqtt == undefined ? '' : this.hardForm.mqtt,
      }

      console.log('是表单数据哩')
      console.log(customerObj)

      console.log('选中的设备列表')
      console.log(this.multipleSelection)

      var promiseData = [] // 用来放promise的

      for (let i = 0; i < this.multipleSelection.length; i++) {
        let deviceid = this.multipleSelection[i].deviceid
        let devicetype = this.multipleSelection[i].devicetype
        let name = this.multipleSelection[i].name
        let station = this.multipleSelection[i].station

        let obj = {
          deviceid: deviceid, // 设备id
          server: this.hardForm.server, // 服务器接口地址
          customer: JSON.stringify(customerObj), // 客户
          devicetype: devicetype, // 设备类型
          name: name, // 设备名
          station: station// 微站名
        }

        console.log('是提交对象哩')
        console.log(obj)


        this.getIfBind(deviceid).then(data => {
          let ifBind = data
          if (ifBind) {
            console.log('绑定过的,走修改')
            promiseData.push(this.batchUpdata(obj))
          } else {
            console.log('没有绑定过的,走新增')
            promiseData.push(this.batchAdd(obj))
          }
        })


      }
      Promise.all(promiseData).then(data => { // 数据
        console.log(data)
        this.$message({
          message: '批量成功!',
          type: 'success'
        });
      })
    },

    getIfBind(deviceid) { // 获取是否已绑定
      let obj = {
        deviceid: deviceid,
      }
      return new Promise((resolved, rej) => {
        hardList(obj).then(res => {
          let data = res.data
          if (data.length > 0) { // 已经绑过了
            resolved(true)
          }
          else {
            resolved(false)
          }
        })
      })
    },

    batchAdd(obj) { // 新增
      return new Promise((resolved, rej) => {
        hardAdd(obj).then(res => {
          resolved(res)
        })
      })
    },

    batchUpdata(obj) { // 修改
      return new Promise((resolved, rej) => {
        hardSet(obj).then(res => {
          resolved(res)
        })
      })

    },



    /*================ 批量硬件配置 结束 ================*/
<think>好的,用户问的是“promise的含义”,我需要先确定他们指的是哪个领域的。因为“promise”这个词在不同上下文中有不同的意思。首先想到的是编程中的Promise对象,特别是在JavaScript里处理异步操作的情况。也有可能用户指的是日常用语中的承诺,或者是其他领域中的术语,比如法律或商业中的保证。 接下来,我需要检查用户的问题是否有上下文提示。但根据用户提供的信息,没有更多的背景。因此,我应该覆盖主要的可能性,但可能更倾向于技术解释,因为用户提到了“系统级指令”和LaTeX格式,这可能暗示技术背景。 首先,从编程角度解释Promise。在JavaScript中,Promise是处理异步操作的重要机制,用来避免回调地狱。需要说明它的三种状态:pending、fulfilled、rejected,以及如何使用then和catch处理结果。可能还要提到async/await语法糖,这是基于Promise的。 然后,考虑到非技术含义,简单说明日常生活中的“承诺”是指对某事的保证,比如个人之间的约定或商业中的服务保证。这部分可以简短一些,因为用户可能更关注技术解释。 另外,可能需要检查是否有其他专业领域的使用,比如法律中的承诺,但可能用户不太需要深入这部分。如果时间允许,可以简要提及,但重点放在编程和日常用法。 还要注意结构清晰,分点回答,符合用户要求的步骤化解决问题。使用中文,避免术语混淆,必要时举说明。同时,确保LaTeX格式正确,但用户的问题本身不涉及数学公式,所以可能不需要使用。但根据系统指令,所有行内数学表达式要用$...$,但这里可能不适用,所以可能不需要处理公式部分。 需要验证信息的准确性,比如Promise的状态、使用方法,确保没有过时的内容,比如是否ES6引入的,现在是否仍然适用。同时,举要简洁,比如用fetch API的子说明Promise的使用。 最后,总结两者的含义,确保用户能够区分不同上下文中的意思,并满足结构清晰的要求。</think>Promise 的含义可以从不同领域理解,以下是分领域说明: --- ### 一、编程领域(JavaScriptPromiseJavaScript 中处理异步操作的核心机制,用于替代传统的回调函数模式,解决“回调地狱”问题。 1. **核心概念** - **异步操作容器**:表示一个尚未完成但预期在未来完成的操作(如网络请求、文件读取)。 - **状态管理**: - `pending`(进行中) - `fulfilled`(已成功) - `rejected`(已失败) 状态一旦改变不可逆。 2. **基本用法** ```javascript const promise = new Promise((resolve, reject) => { // 异步操作(如网络请求) if (成功) resolve(result); // 触发 then() else reject(error); // 触发 catch() }); promise .then(result => console.log(result)) // 处理成功结果 .catch(error => console.error(error)); // 处理错误 ``` 3. **链式调用与组合** - 通过 `.then()` 串联多个异步操作 - 通过 `Promise.all()` 并行处理多个 Promise - 通过 `async/await` 语法糖(底层基于 Promise)简化代码: ```javascript async function fetchData() { try { const result = await someAsyncFunction(); console.log(result); } catch (error) { console.error(error); } } ``` --- ### 二、日常语言 指对某事的保证或承诺,包含两层含义: 1. **个人承诺** - :“我承诺明天完成报告” → 表达责任与确定性。 2. **商业/法律承诺** - :“产品质保承诺” → 具有法律效力的义务。 --- ### 三、对比总结 | 领域 | 关键特性 | 典型场景 | |------------|-----------------------------------|---------------------------| | 编程 | 管理异步操作状态,避免回调嵌套 | 网络请求、定时任务 | | 日常生活 | 责任约定,可能具有法律约束力 | 个人约定、服务协议 | 若有具体使用场景(如代码调试或语义分析),可进一步说明!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值