gpt4 book ai didi

javascript - Async Await es6 优化

转载 作者:行者123 更新时间:2023-11-29 18:57:37 25 4
gpt4 key购买 nike

我正在尝试使用 async/await 并且我的代码可以正常工作,我只需要建议它是使用 async/await 的正确方法,还是我需要 .then 这里。我有一个函数 loadDataForExport - 返回生成数据的 promise 。另外,我有带有异步事件函数的 actionButtons,我在其中使用 asyn/await,因为在其他情况下 let data = loadDataForExport() - 返回 promise 。

loadDataForExport = async () => {
const {sort, search} = this.state
let dataForExport = await this.props.load({pageSize: this.props.totalCount, skip: 0, sort, search}).then(({entities: {devices, rooms}}) => Object.values(devices).map(({deviceType, deviceId, name, version, location, lastAliveMessage, deviceStatus}) => ({
deviceType,
deviceId,
name,
currentVersion: version,
location: location && rooms[location] ? rooms[location].name : '',
lastAliveMessage,
deviceStatus,
})))

return dataForExport
}


const actionButtons = loadDataForExport => [
{
event: async () => {
let data = await loadDataForExport()
exportToExcel(data)
},
name: 'exportToExcel',,
},
]

最佳答案

根据我对 async/await 工作原理的(太少)理解,您的做法是正确的。我相信以下内容是正确的,如果我错了,请随时纠正我(我准备支付一些反对票以更好地理解它是如何工作的):

Await 将等待(通过生成器)给定的 promise 在执行异步函数的下一条语句之前得到解决。

因此,let dataForExport = await this.props.load(...) 会将 this.props.load(...) 的解析值分配给数据导出

异步函数 loadDataForExport 将返回一个 promise ,该 promise 将使用 dataForExport 的值进行解析,或者使用被拒绝的 this.props.load( ),您可以像在 loadDataForExport.event()

中一样将其与 await 一起使用

关于javascript - Async Await es6 优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48641328/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com