使用await时出现意外的标识符

Ron*_*ior 15 javascript node.js async-await es6-promise ecmascript-2017

我目前正在尝试将async/await用于需要循环同步的函数.

这是功能:

async channelList(resolve, reject) {
    let query = ['channellist'].join(' ');

    this.query.exec(query)
    .then(response => {
        let channelsRaw = response[0].split('|');
        let channels = [];

        channelsRaw.forEach(data => {
            let dataParsed = ResponseParser.parseLine(data);

            let method = new ChannelInfoMethod(this.query);
            let channel = await method.run(dataParsed.cid);

            channels.push(channel);
        });

        resolve(channels);
    })
    .catch(error => reject(error));
}
Run Code Online (Sandbox Code Playgroud)

当我尝试运行它时,我收到此错误:

let channel = await method.run(dataParsed.cid);
                    ^^^^^^
SyntaxError: Unexpected identifier
Run Code Online (Sandbox Code Playgroud)

可能是什么原因造成的?
谢谢!

Jos*_*eph 47

async的定义是在,channelList而不是在包含它的箭头函数await.移动async到该箭头功能:

channelsRaw.forEach(async (data) => {
    let dataParsed = ResponseParser.parseLine(data);

    let method = new ChannelInfoMethod(this.query);
    let channel = await method.run(dataParsed.cid);

    channels.push(channel);
});
Run Code Online (Sandbox Code Playgroud)

此外,由于您无论如何都在使用异步,因此您可以将整个承诺链异步同步.