2017-04-07 14 views
7

Tôi hiện đang cố gắng sử dụng async/await cho một hàm yêu cầu vòng lặp phải đồng bộ.Số nhận dạng không mong muốn khi sử dụng await

Đây là chức năng:

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)); 
} 

Khi tôi cố gắng chạy nó, tôi nhận được lỗi này:

let channel = await method.run(dataParsed.cid); 
        ^^^^^^ 
SyntaxError: Unexpected identifier 

gì có thể là nguyên nhân của nó?
Cảm ơn!

Trả lời

30

async của bạn được xác định trên channelList chứ không phải trên chức năng mũi tên trong đó có await. Di chuyển async với mũi tên hàm:

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); 
}); 

Ngoài ra, kể từ khi bạn đang sử dụng async anyways, bạn có thể chỉ async toàn bộ chuỗi lời hứa bạn có ở đó.

+1

Tôi cảm thấy ngớ ngẩn bây giờ, không nhận ra đó là một cuộc gọi lại. Cảm ơn :) –

Các vấn đề liên quan