使用 await 时出现意外标识符
Unexpected identifier when using 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
可能是什么原因造成的?
谢谢!
您的 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);
});
此外,由于您无论如何都在使用异步,因此您可以将现有的整个承诺链异步化。
我目前正在尝试将 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);
});
此外,由于您无论如何都在使用异步,因此您可以将现有的整个承诺链异步化。