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].timers) } }) ) } await Promise.all(promises) console.log({ data: outputArr }) return { data: outputArr } }, 每次调用接口得到周一到周日其中一天的数据 数据形态是[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"}] 现在需要把一周七天的数据渲染 到页面上 页面为 <grid-table ref="table" size="large" :schema="schema" > <grid-table-item v-slot="item"> </grid-table-item> </grid-table> schema: { pageSize: 9, list: getDevices, }
时间: 2023-11-27 12:49:50 浏览: 47
Async:使用ES6生成器的又一个简单的PromisesA +兼容异步流控制
首先,需要在页面中引入相应的组件和方法。可以在页面的<template>标签中添加以下代码:
```
<template>
<grid-table ref="table" size="large" :schema="schema">
<grid-table-item v-slot="item">
<!-- 在这里渲染数据 -->
</grid-table-item>
</grid-table>
</template>
```
然后,需要在页面的<script>标签中定义相应的方法和数据。可以添加以下代码:
```
<script>
import { electricQuery } from '@/api/electric'
export default {
data() {
return {
schema: {
pageSize: 9,
list: [] // 初始数据为空数组
}
}
},
methods: {
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].timers)
}
})
)
}
await Promise.all(promises)
console.log({ data: outputArr })
// 将数据赋值给 list
this.schema.list = outputArr
}
},
mounted() {
this.getPorts()
}
}
</script>
```
最后,需要根据数据渲染表格。在页面模板中的<grid-table-item>标签中添加以下代码:
```
<grid-table-item v-slot="item">
<div v-for="(day, index) in item.item" :key="index">
<p>周{{ index + 1 }}</p>
<p v-if="day.startTime !== '0:0:0'">{{ day.startTime }} - {{ day.stopTime }}</p>
<p v-else>暂无数据</p>
</div>
</grid-table-item>
```
这样就可以将一周七天的数据渲染到表格中了。
阅读全文