Ron*_*ior 15 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 = [];
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));
}
Run Code Online (Sandbox Code Playgroud)
当我尝试运行它时,我收到此错误:
let channel = await method.run(dataParsed.cid);
^^^^^^
SyntaxError: Unexpected identifier
Run Code Online (Sandbox Code Playgroud)
可能是什么原因造成的?
谢谢!
Jos*_*eph 47
您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);
});
Run Code Online (Sandbox Code Playgroud)
此外,由于您无论如何都在使用异步,因此您可以将整个承诺链异步同步.