現在、ループを同期する必要がある関数に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
その原因は何でしょうか?
ありがとう!
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);
});
また、とにかく非同期を使用しているので、そこにあるプロミスチェーン全体を非同期にすることができます。