我目前正在尝试将async / await用于需要循环同步的函数。
这是功能:
f1 = @(t,u) [0 ; u(1:n-2)-2*u(2:n-1)-u(3:n) ; 2*(u(n-1)-u(n))]/dx^2;
当我尝试运行它时,我收到此错误:
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));
}
原因可能是什么?
谢谢!
答案 0 :(得分:45)
您的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);
});
此外,由于您仍在使用异步,因此您可以将整个承诺链异步同步。