7

現在、ループを同期させる必要のある関数に対してasync/awaitを使用しようとしています。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 

それの原因である可能性がありますか?
ありがとうございます!

答えて

30

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

また、あなたはとにかく非同期を使用していることから、あなたはちょうどあなたがそこに持っている全体の約束チェーンASYNCことができます。

+1

私は今はとても馬鹿だと感じていますが、コールバックであったことを認識しませんでした。ありがとう:) –

関連する問題