Javascript 异步等待es6优化

Javascript 异步等待es6优化,javascript,asynchronous,ecmascript-6,async-await,ecmascript-2017,Javascript,Asynchronous,Ecmascript 6,Async Await,Ecmascript 2017,我正在尝试使用async/await,我的代码可以正常工作,我只需要关于使用async/await是正确的方法,还是我需要。然后 在这里我有一个函数loadDataForExport——它返回promise和generate data。此外,我还有带有异步事件函数的actionbutton,其中我使用asyn/await,因为在另一种情况下let data=loadDataForExport()-返回承诺 loadDataForExport = async () => {

我正在尝试使用async/await,我的代码可以正常工作,我只需要关于使用async/await是正确的方法,还是我需要
。然后

在这里我有一个函数
loadDataForExport
——它返回promise和generate data。此外,我还有带有异步事件函数的
actionbutton
,其中我使用asyn/await,因为在另一种情况下
let data=loadDataForExport()
-返回承诺

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将在执行异步函数的下一条语句之前(通过生成器)等待给定的承诺被解析

因此,
let dataForExport=wait this.props.load(…)
this.props.load(…)
的解析值分配给
dataForExport


异步函数
loadDataForExport
将返回一个承诺,该承诺要么用
dataForExport
的值解析,要么用被拒绝的
this.props.load()
的值拒绝,您可以像在
loadDataForExport.event()
中一样使用wait,看起来很好。分配load的解析值是正确的,但是loadDataForExport函数将立即返回一个承诺。如果load导致错误或返回被拒绝的承诺,则GetProResultBySecriesFamily返回的承诺也将被拒绝。@好的,谢谢。试图根据您的评论编辑我的答案