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

时间:2017-04-07 23:44:07

标签: javascript node.js async-await es6-promise ecmascript-2017

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

这是功能:

f1 = @(t,u) [0 ; u(1:n-2)-2*u(2:n-1)-u(3:n) ; 2*(u(n-1)-u(n))]/dx^2;

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

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

原因可能是什么?
谢谢!

1 个答案:

答案 0 :(得分:45)

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

此外,由于您仍在使用异步,因此您可以将整个承诺链异步同步。