Неожиданный идентификатор при использовании await

в настоящее время я пытаюсь использовать 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 ответов


код async определен channelList и не на функции стрелки, где await содержится. Двигайся!--1--> к этой функции стрелки:

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

кроме того, поскольку вы используете async в любом случае, вы можете просто асинхронизировать всю цепочку обещаний, которую у вас есть.