使用 await 时出现意外的标识符
Posted
技术标签:
【中文标题】使用 await 时出现意外的标识符【英文标题】:Unexpected identifier when using await 【发布时间】:2017-09-03 10:55:51 【问题描述】:我目前正在尝试将 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
的箭头函数上。将 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,因此您可以只异步您那里的整个 Promise 链。
【讨论】:
我现在觉得很傻,没想到是在回调中。谢谢:) 我犯了同样的错误,我没想到匿名函数实际上就是函数!以上是关于使用 await 时出现意外的标识符的主要内容,如果未能解决你的问题,请参考以下文章