使用await时出现意外标识符

18

我目前正在尝试使用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));
}
当我尝试运行它时,出现了这个错误:
let channel = await method.run(dataParsed.cid);
                    ^^^^^^
SyntaxError: Unexpected identifier

它的原因可能是什么?
谢谢!

1个回答

51

您的async定义在channelList上,而不是包含await的箭头函数上。将async移到该箭头函数中:

您的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);
});

此外,既然您已经在使用异步操作,您可以将整个 Promise 链都异步化。


1
现在我感觉很愚蠢,没意识到这是一个回调函数。谢谢 :) - Ron Melkhior
1
我犯了同样的错误,我没有将匿名函数视为实际的函数! - Jono

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接