Javascript 使用wait时出现意外标识符
我目前正在尝试使用async/await来实现一个要求循环同步的函数 这就是功能:Javascript 使用wait时出现意外标识符,javascript,node.js,async-await,es6-promise,ecmascript-2017,Javascript,Node.js,Async Await,Es6 Promise,Ecmascript 2017,我目前正在尝试使用async/await来实现一个要求循环同步的函数 这就是功能: async channelList(resolve, reject) { let query = ['channellist'].join(' '); this.query.exec(query) .then(response => { let channelsRaw = response[0].split('|'); let channels =
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));
}
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);
});
当我尝试运行它时,会出现以下错误:
let channel = await method.run(dataParsed.cid);
^^^^^^
SyntaxError: Unexpected identifier
原因可能是什么?谢谢 您的
async
是在channelList
上定义的,而不是在包含wait
的箭头函数上定义的。将async
移动到该箭头函数:
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));
}
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);
});
另外,由于您使用的是异步,因此您可以将整个承诺链异步化。我现在觉得很傻,没有意识到它是在回调中。谢谢:)我犯了同样的错误,我没有想到匿名函数实际上就是函数!