最近开发小程序,需要用到 async/await 功能,如下(类似 vue.js 单页面开发):
export default class Index extends wepy.page {
data = {
ecAccessCount: {
option: this.getAccessCountOption().then((res) => {
// 问题在这里,getAccessCountOption()返回的是一个 promise 对象,该如何直接获取该对象里包含的值并赋值给 option 呢?因为 option 的值是一个{}对象。
return res
})
}
}
async getAccessCountOption() {
// 这里我创建两个对象,并在下面的 await 中通过 api 获取并处理得到的值,因为在 return 回的对象中需要用到这两个动态的值。
let dataX = []
let dataY = []
await wepy.request({
url: api.user.accessCount.url,
method: api.user.accessCount.method
}).then((res) => {
res.data.data.map(function (item, index, array) {
dataX.push(item.dimensions[0])
dataY.push(item.metrics[0].values[0])
})
})
return {
legend: {
data: ['会话数']
},
grid: {
left: '0',
right: '0',
bottom: '2%',
containLabel: true
},
xAxis: {
type: 'category',
data: dataX
},
yAxis: {
type: 'value'
},
series: [
{
name: '会话数',
data: dataY,
type: 'line'
}
]
}
}
}
上面就是遇到的问题,,getAccessCountOption()返回的是一个 promise 对象,该如何直接获取该对象里包含的值并赋值给 option 呢? option 接受一个对象作为参数。
1
Exin 2018-04-13 01:25:03 +08:00
```js
option: await this.getAccessCountOption() ``` 这种问题搜一下 async/await 的基本用法就应该了然了,楼主误用了什么关键词? |
2
zhoufenfens 2018-04-13 01:46:21 +08:00
既然你知道 getAccessCountOption 返回一个 promise,那就在外面再包一层 async 呗,await 独立使用确实会报 'await is a reserved word'的错误。
ecAccessCount: { option: (async function getACO() { return this.getAccessCountOption().then((res) => { return res }); })() } |
3
zhoufenfens 2018-04-13 01:47:04 +08:00
排版不太好,但这个确实是可行的
|
4
grantonzhuang 2018-04-13 07:57:11 +08:00 via Android
@zhoufenfens 第一个 return 后面加一个 await,后面的 then 那些都可以不要了
|
5
DOLLOR 2018-04-13 10:18:51 +08:00
@zhoufenfens 这样做,option 仍然是一个 promise 对象。而且 this 已经指歪了……
|
6
s609926202 OP @Exin 你这样子写肯定不行的吧,,await 是要和 async 一起用的,,
|
7
Exin 2018-04-13 14:01:28 +08:00 via iPhone
|