async getPorts () { const outputArr = [] const promises = [] for (let i = 1; i <= 7; i++) { promises.push( electricQuery({ electricId: ELECTRIC_ID, commandKey: 15, queryMode: 1, week: i }).then(({ data }) => { if (data[0]) { outputArr.push(data[0]) } }) ) } console.log(outputArr) await Promise.all(promises) this.data = outputArr 我想要每次得到的数据是按照week1-7的顺序排列,代码怎么写
时间: 2023-12-16 13:06:42 浏览: 128
您可以把 `Promise.all` 的返回值用 `Array.prototype.sort()` 方法来排序,具体代码如下:
```
async getPorts () {
const outputArr = [];
const promises = [];
for (let i = 1; i <= 7; i++) {
promises.push(
electricQuery({
electricId: ELECTRIC_ID,
commandKey: 15,
queryMode: 1,
week: i
}).then(({ data }) => {
if (data[0]) {
outputArr.push(data[0]);
}
})
);
}
await Promise.all(promises);
// 按照week1-7的顺序排列
outputArr.sort((a, b) => a.week - b.week);
this.data = outputArr;
}
```
这里使用 `Array.prototype.sort()` 方法,它接受一个函数作为参数,该函数用于比较数组中的两个元素。在这个例子中,我们按照周数 `week` 来排序,通过比较 `a.week` 和 `b.week` 的大小来实现排序。
相关问题
async getPorts () { const promises = [] for (let i = 1; i <= 7; i++) { promises.push( electricQuery({ electricId: ELECTRIC_ID, commandKey: 15, queryMode: 1, week: i }).then(({ data }) => { return data[0] }) ) } const outputArr = await Promise.all(promises) console.log(outputArr) this.data = outputArr },在代码中eslint报错Unexpected block statement surrounding arrow body; move the returned value immediately after the `=>`.,怎么解决
这个错误提示是因为箭头函数中的代码块包含了 `return` 语句,应该将其简化为一行代码,将返回值直接放在 `=>` 后面。可以将代码修改为如下形式:
```
async getPorts () {
const promises = []
for (let i = 1; i <= 7; i++) {
promises.push(
electricQuery({
electricId: ELECTRIC_ID,
commandKey: 15,
queryMode: 1,
week: i
}).then(({ data }) => data[0])
)
}
const outputArr = await Promise.all(promises)
console.log(outputArr)
this.data = outputArr
}
```
这样就避免了代码块中的 `return` 语句,符合 eslint 的规范要求。
0 : {startTime: "12:0:0", stopTime: "22:0:0"} 1 : {startTime: "0:0:0", stopTime: "0:0:0"} 2 : {startTime: "0:0:0", stopTime: "0:0:0"} 3 : {startTime: "0:0:0", stopTime: "0:0:0"} 这是每天的数据,需要在页面中循环七次,得到七天的数据,并把每天的四条数据渲染到页面上。使用element grid组件 这是 async getPorts () { const outputArr = [] const promises = [] for (let i = 1; i <= 7; i++) { promises.push( electricQuery({ electricId: ELECTRIC_ID, commandKey: 15, queryMode: 1, week: i }).then(({ data }) => { if (data[0]) { outputArr.push(data[0]) } }) ) } await Promise.all(promises) return { data: outputArr } },js代码,如何修改,代码
您可以使用 `el-row` 和 `el-col` 组件来渲染每天的四条数据,循环七次,代码如下:
```
<template>
<div>
<el-row v-for="day in data" :key="day">
<el-col v-for="item in day" :key="item.startTime" :span="6">
<div>开始时间:{{ item.startTime }}</div>
<div>结束时间:{{ item.stopTime }}</div>
</el-col>
</el-row>
</div>
</template>
<script>
export default {
data() {
return {
data: []
}
},
async created() {
const outputArr = []
const promises = []
for (let i = 1; i <= 7; i++) {
promises.push(
electricQuery({
electricId: ELECTRIC_ID,
commandKey: 15,
queryMode: 1,
week: i
}).then(({ data }) => {
if (data[0]) {
outputArr.push(data[0])
}
})
)
}
await Promise.all(promises)
this.data = outputArr
}
}
</script>
```
在模板中,我们循环 `data` 数组,它包含了七个数组,每个数组对应一天的数据。然后,我们再在每个数组中循环四次,渲染每天的四条数据。
在 `created` 钩子函数中,我们使用 `Promise.all` 等待所有请求都完成,然后将结果保存到 `data` 中,以便在模板中使用。
阅读全文