如何解决javascript中的async await问题?

以下是我的代码

let icsFileData = [];
icsFileData = filterAttachmentArray.map(async(file) => {
  let buff = new Buffer(file.data,'base64');
  let text = buff.toString('ascii');
  const data = await ical.async.parseICS(text);
  const objectKeys = Object.values(data);
  const filterObj =
    objectKeys.length === 1 || objectKeys[0].type === 'VEVENT' ? objectKeys[0] : objectKeys[1];
  const desiredObj = {
    subject: filterObj.summary.val ? filterObj.summary.val : filterObj.summary,description: filterObj.description.val ? filterObj.description.val : filterObj.description,dateStart: moment(filterObj.start).format('YYYY-MM-DDTHH:mm:ss\\Z'),dateEnd: moment(filterObj.end).format('YYYY-MM-DDTHH:mm:ss\\Z'),organizer: filterObj.organizer.params.EMAIL ?
      filterObj.organizer.params.EMAIL :
      filterObj.organizer.val.split('mailto:').join(''),invites: filterObj.attendee.length === undefined ?
      filterObj.attendee.params.EMAIL ?
      filterObj.attendee.params.EMAIL :
      filterObj.attendee.val.split('mailto:').join('') :
      filterObj.attendee.map(
        (invite) =>
        invite.params.EMAIL ? invite.params.EMAIL : invite.val.split('mailto:').join('')
      ),location: filterObj.location.val ? filterObj.location.val : filterObj.location
  };
  icsFileData.push(desiredObj);
});
//const icsFileDataArray = await Promise.all(icsFileData);
console.log('jhgjhgjhgj: ',await icsFileData);

请检查是什么问题,我尝试了很多次总是得到相同的结果 结果。

这是此代码始终返回我的结果

[ Promise { <pending> } ]
matthewzxc 回答:如何解决javascript中的async await问题?

需要了解的东西

  1. async/await只是在其中编写异步代码的语法糖 同步时尚
  2. 您的.map(async() => { ...})中的回调将返回Promise
  3. 因此在您的代码中,icsFileData是以下内容的集合 Promise,因此您必须使用Promise.all来解决所有 有望获得预期的结果
let icsFileData = [];
icsFileData = filterAttachmentArray.map(async(file) => {
  ....
  // you dont need this line,you can simply return the desiredObj
  // icsFileData.push(desiredObj);
  return desiredObj;
});
// this does the magic,since,icsFileData is a array of Promise
const icsFileDataArray = await Promise.all(icsFileData);
console.log('result: ',icsFileDataArray);
本文链接:https://www.f2er.com/2654023.html

大家都在问