web-dev-qa-db-fra.com

Identifiant inattendu lors de l'utilisation de l'attente

J'essaie actuellement d'utiliser async/wait pour une fonction qui nécessite que la boucle soit synchrone.

Voici la fonction:

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

Lorsque j'essaye de l'exécuter, j'obtiens cette erreur:

let channel = await method.run(dataParsed.cid);
                    ^^^^^^
SyntaxError: Unexpected identifier

Quelle pourrait en être la cause?
Merci!

15
Ron Melkhior

Votre async est défini sur channelList et non sur la fonction flèche où se trouve await. Déplacez async vers cette fonction de flèche:

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

De plus, puisque vous utilisez de toute façon async, vous pouvez simplement asynchroniser toute la chaîne de promesses que vous avez là-bas.

47
Joseph